Ich möchte eine Multi-Field-Suche auf einem lucene.net-Index durchführen, aber die Ergebnisse basierend auf einem der Felder filtern. Hier ist, was ich momentan mache:Wie verwendet man multifieldquery und Filter in Lucene.net
So indizieren die Felder die Definitionen sind:
doc.Add(new Field("id", id.ToString(), Field.Store.YES, Field.Index.UN_TOKENIZED));
doc.Add(new Field("title", title, Field.Store.NO, Field.Index.TOKENIZED));
doc.Add(new Field("summary", summary, Field.Store.NO, Field.Index.TOKENIZED, Field.TermVector.YES));
doc.Add(new Field("description", description, Field.Store.NO, Field.Index.TOKENIZED, Field.TermVector.YES));
doc.Add(new Field("distribution", distribution, Field.Store.NO, Field.Index.UN_TOKENIZED));
Wenn ich die Suche durchführen ich folgendes tun:
MultiFieldQueryParser parser = new MultiFieldQueryParser(new string[]{"title", "summary", "description"}, analyzer);
parser.SetDefaultOperator(QueryParser.Operator.AND);
Query query = parser.Parse(text);
BooleanQuery bq = new BooleanQuery();
TermQuery tq = new TermQuery(new Term("distribution", distribution));
bq.Add(tq, BooleanClause.Occur.MUST);
Filter filter = new QueryFilter(bq);
Hits hits = searcher.Search(query, filter);
Allerdings ist das Ergebnis immer 0 Treffer
Was mache ich falsch?
Wenn der Zieltext gesucht wird, ist „ein Fuchs“, und der Suchbegriff von einem Client eingegeben wird nur Box, wie bekommt man lucene ein Spiel für die triggern "Box Fuchs" Doc? –