Ich benutze Lucene 5.3, um eine Reihe von Dokumenten zu indexieren und zu verwenden, wobei jeder Begriff in der Abfrage um ein gewisses Ergebnis erhöht wird.warum Lucene nicht alle Dokumente im Index zurückgibt?
Mein Problem ist, wenn ich den Index suche ich eine geringere Anzahl von Dokumenten als Treffer als das sind in meinem Index.
System.out.println("docs in the index = " + reader.numDocs());
//e.g., docs in the index = 92
TopDocs topDocs = indexSearcher.search(q, reader.numDocs()); //this ensures no result is omitted from the search.
ScoreDoc[] hits = topDocs.scoreDocs;
System.out.println("results found: " + topDocs.totalHits)
//e.g., results found: 44
Was ist der Grund für dieses Verhalten? Ignoriert Lucene Dokumente mit einem Nullpunktestand?
Wie bekomme ich alle Dokumente im Index, egal welche Punktzahl sie haben?
Erwarten Sie, dass diese Abfrage alle Dokumente in Ihrem Index übereinstimmen? Oder möchten Sie, dass alle Dokumente zurückgegeben werden, unabhängig davon, ob sie mit der Abfrage übereinstimmen oder nicht? – femtoRgon
Ich möchte alle Dokumente zurückgeben. Ich werde sie dann basierend auf der Punktzahl ordnen, so dass die nicht übereinstimmenden Dokumente die Unterseite sein werden. – KillBill
@KillBill Betrachtet man den Code in IndexSearcher :: search (Gewichtung, ScoreDoc nach, int nDocs), könnte es sein, dass Docs auf Basis des maxScore nicht zurückgegeben werden: return new TopDocs (totalHits, scoreDocs, maxScore); Also würde ich TopDocs searchAfter verwenden (ScoreDoc nach, Query Abfrage, int n). –