Automatischer Vorschlag funktioniert nach der ersten Suche nicht in Lucene

9

Momentan arbeite ich an dem Auto Suggestion Teil mit Lucene in meiner Anwendung. Der automatische Vorschlag der Wörter funktioniert gut in der Konsolenanwendung, aber jetzt habe ich die Webanwendung integriert, aber es funktioniert nicht wie gewünscht.

Wenn die Dokumente zum ersten Mal mit einigen Suchbegriffen und automatischen Vorschlägen gesucht werden, funktionieren beide gut und zeigen das Ergebnis an. Aber wenn ich wieder nach einem anderen Schlüsselwort oder dem gleichen Schlüsselwort suche, werden sowohl der automatische Vorschlag als auch das Suchergebnis nicht angezeigt. Ich bin nicht in der Lage herauszufinden, warum dieses seltsame Ergebnis kommt.

Die Snippets für den automatischen Vorschlag sowie für die Suche lauten wie folgt:

%Vor%

Beispiel: In der ersten Iteration, wenn ich nach dem Wort "sample" suche

  • Auto Vorschlag gibt mir das Ergebnis: Probe, Proben, Sampler usw. (Dies sind die Wörter in den Dokumenten)
  • Suchergebnis als: Beispiel

Aber wenn ich es wieder mit demselben Text oder anderem suche, zeigt es kein Ergebnis und auch LookUpResult Listengröße kommt Null.

Ich verstehe nicht, warum das passiert. Bitte helfen Sie

Nachfolgend finden Sie den aktualisierten Code für die Indexerstellung aus Dokumentensätzen.

%Vor%

Ich habe auch beobachtet, dass von der zweiten Suchiteration die Dateien im Indexverzeichnis gelöscht werden und nur die Datei mit dem Suffix .segment Änderungen wie .segmenta, .segmentb, .segmentc usw. erhält.

Ich weiß nicht, warum diese seltsame Situation passiert.

    
anand 04.09.2016, 18:39
quelle

2 Antworten

0

Ihr Code sieht ziemlich einfach aus. Ich habe also das Gefühl, dass Sie möglicherweise mit diesem Problem konfrontiert werden, weil bei Ihren Indizes etwas nicht in Ordnung ist. Die Informationen zur Erstellung von Indizes könnten bei der Diagnose hilfreich sein. Aber diesmal genauen Code:)

    
Nikhil 07.09.2016 18:38
quelle
0

Ich denke, Ihr Problem ist mit writer.deleteUnusedFiles () Anruf.

Laut JavaDocs , dies call kann "unreferenced index commits" löschen.

Welche Indizes gelöscht werden sollen, wird von IndexDeletionPolicy gesteuert. "Die Standardrichtlinie zum Löschen lautet jedoch KeepOnlyLastCommitDeletionPolicy , die immer entfernt wird old commits, sobald ein neues Commit durchgeführt wurde (dies entspricht dem Verhalten vor 2.2). ".

Es wird auch über "Beim letzten Schließen löschen" gesprochen, dh sobald dieser Index verwendet und geschlossen wird (z. B. während der Suche), wird dieser Index gelöscht.

So werden alle Indizes, die Ihrem ersten Suchergebnis entsprechen, sofort gelöscht.

Versuchen Sie Folgendes:

%Vor%     
coolk 10.09.2016 07:33
quelle

Tags und Links