2011-01-03 2 views
0

Ich arbeite daran, meinen Lucene-Index zu optimieren, und ich bin ein wenig unsicher, worum es bei Field.Store geht. Ich frage mich, ob ich eine anständige Beschreibung bekommen könnte.Lucene.Net Speichern. Wie kommt alles zusammen?

Beispiel:

doc.Add(New Field("user", e.Username, Field.Store.YES, Field.Index.ANALYZED)) 

Wenn ich einen „Benutzer“ in meinem Benutzerfeld gespeichert haben, und ich möchte, dass die Benutzer über user:joe suchen können muss ich Field.Store.YES das Feld speichern? Ich bin mir nicht ganz sicher, wie der Laden funktioniert. Wenn es bedeutet, dass es nicht im Index ist, was wäre dann der Punkt, das "Benutzer" -Feld in den Index zu setzen?

+0

nein, wenn Sie nicht den tatsächlichen Benutzernamen abrufen müssen, aber nur wissen wollen, ob es ein Treffer ist oder nicht, müssen Sie den Wert nicht speichern. –

+0

also wann ist ein Beispiel für die Notwendigkeit, den Wert zu speichern? –

Antwort

1

Field.Store in diesem wunderschön erklärt SO Lucene indexing: Store and indexing modes explained

Grundsätzlich sind die Suche fädeln Treffer werden die Daten für alle Felder mit Field.Store.YES Satz umfassen, Sie dies nicht benötigen, wenn Sie einen anderen Speichermechanismus wie ein DB haben. Wenn Sie sich ausschließlich auf Lucene verlassen, können Sie einige allgemeine Felder speichern, von denen mindestens eines ausreicht, um zum Originaldokument auf der Festplatte zu gelangen.

+0

yeah ... normalalli Ich habe nur Speicher für ein Identifikationsfeld auf ja eingestellt, so dass ich das ursprüngliche Objekt aus der Datenbank abrufen kann, wenn es einen Suchtreffer gibt. –

+0

netter Link. Ich habe es bei meiner Suche nicht gefunden. Vielen Dank. –

+0

Wenn ich also alle meine Felder als 'Store.NO' und' Index.ANALYZED' einfüge - muss ich immer noch nach einem bestimmten 'Feld' suchen. Aber wenn dieses spezifische Feld meine Schlüsselwörter nicht enthält (obwohl die Schlüsselwörter in einem anderen Feld enthalten sind), dann ist die Analyse nicht möglich. Ist das korrekt? * IE: Ich suche nach Joe, der im Benutzerfeld ist, aber mein Parser zeigt auf das Detailfeld, dann wird Joe nie gefunden. * –