Ich verwende Lucene Search, um die Artikel zu erhalten, die zum Suchtext passen. Gibt es eine Möglichkeit, sie in aufsteigender Reihenfolge der Treffer im Artikel zu bekommen?Wie kann ich die Liste in LuceneSearch nach der Anzahl der Treffer bestellen?
Beispiel: Wenn mein Suchtext ist stack
und in erster Artikel gibt es zwei Vorkommen des Wortes stack
und in der zweiten Artikel gibt es drei Vorkommen von stack
dann der zweite sollte an erster Stelle stehen und die erste sollte zweite kommen.
Eine Idee, wie kann ich es schaffen?
Unten ist der Code, den ich
List<LuceneSearchResult> searchResult = new List<LuceneSearchResult>();
LuceneSearchResult result;
IndexReader reader = IndexReader.Open(INDEX_DIR);
Searcher searcher = new IndexSearcher(reader);
Analyzer analyzer = new StandardAnalyzer();
QueryParser parser = new QueryParser("Text", analyzer);
//Text and Type are column name
Query q = parser.Parse(string.Format("Text:{0} AND Type:{1}", finalText, type));
Hits hs = searcher.Search(q);
ArrayList idList = new ArrayList();
for (int i = 0; i < hs.Length(); i++)
{
Document doc = hs.Doc(i);
result = new LuceneSearchResult();
result.ID = doc.Get("ID");
result.Type = doc.Get("Type");
if (!idList.Contains(result.ID))
{
searchResult.Add(result);
idList.Add(result.ID);
}
}
return searchResult.ToArray();
Hallo KenE klingt das gut, aber wo implementiere ich Field.setOmitNorms (true) ?? –
Sie würden es in Ihrem Indexierungscode nennen. – KenE