0
Ich versuche, Match-Phrasen-Abfrage zu verwenden, aber es ergibt keine Ergebnisse. Was habe ich hier falsch gemacht? Ich benutze Lucene.net 3.0.3Lucene.net Matchphase-Abfrage funktioniert nicht
using (var dir = new RAMDirectory())
{
var queryText = "Bruce Wayne";
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_29);
var sampleDocs = new SortedSet<String>() { "Bruce Wayne", "Wayne Bruce", "Bruce Batman Wayne" };
using (var writer = new IndexWriter(dir, analyzer, create: true, mfl: IndexWriter.MaxFieldLength.LIMITED))
{
foreach (var sampleDoc in sampleDocs)
{
var doc = new Document();
doc.Add(new Field("id", Guid.NewGuid().ToString("N"), Field.Store.YES, Field.Index.NOT_ANALYZED));
doc.Add(new Field("name", sampleDoc, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS));
writer.AddDocument(doc);
}
}
var searcher = new IndexSearcher(dir, true);
var query = new PhraseQuery()
{
Slop = 2
};
foreach (var item in queryText.Split(new [] {' '}, StringSplitOptions.RemoveEmptyEntries))
{
query.Add(new Term("name", item));
}
TopDocs docs = searcher.Search(query, 1000);
}
Dies scheint in Klein ganz gut für mich zu arbeiten (mit 'QUERY =„bruce wayne“' ich drei Ergebnisse). Könnte das Problem sein, dass Sie keine Analyse in Betracht ziehen? "Bruce Wayne" zum Beispiel würde aufgrund der Hauptstädte keine Ergebnisse erzielen. – femtoRgon