2010-11-15 11 views
9

Es gibt ein Konstruktor lucene Field:das Geschäft Attribut eines lucene Feld

Field(String name, String value, Store store, Index index) 

Zum Beispiel habe ich durch ein neues Feld erstellen:

Field f1 = new Field("text", "The text content", Field.Store.YES, Field.Index.ANALYZED); 

Ich bin nicht ganz sicher, von der Bedeutung des vierten Parameters: Index

Wenn ich es auf Index.No setze, ist es also erforderlich, dieses Feld als "Feld" hinzuzufügen?

Da ein Attribut nach meiner Meinung als Feld deklariert wird, sollte es indiziert werden, wenn nicht, warum deklarieren Sie es als Feld?

Was ist der Unterschied zwischen Abfrage und Suche?

Antwort

19

Gespeicherte Felder werden zurückgegeben, wenn Sie ask Lucene to give you back a document. Sie enthalten den ursprünglichen Wert eines Felds ohne Analyse. Sie können sie verwenden, um das Dokument den Benutzern zu präsentieren (nicht unbedingt alle Felder).

Gespeicherte Felder, die nicht indiziert sind, sind nützlich, um Metadaten über ein Dokument zu speichern, die der Benutzer nicht zum Abfragen des Index verwenden wird. Ein Beispiel könnte eine Datenbank-ID sein, von der ein Dokument stammt. Diese ID wird niemals vom Benutzer verwendet werden, da sie nichts davon wissen, so dass es im Allgemeinen nutzlos ist, sie zu indizieren. Aber wenn Sie es speichern, können Sie es verwenden, um zusätzliche Informationen aus Ihrer Datenbank zur Laufzeit zu sammeln.

Der Unterschied zwischen einer Abfrage und einer Suche ist eher subjektiv. Für mich ist eine Suche wirklich der allgemeine Akt der Suche im Index, während eine Abfrage die tatsächliche query string used to search the index ist.

18

Wie in Lucene FAQ erwähnt:

Was der Unterschied zwischen gespeichert ist, in Zeichen übersetzte, indexiert und Vektor?

  • Stored = wie sie ist in dem Lucene Index gespeicherten Wert
  • Zeichen übersetzte = Feld analysiert, um die angegebenen Analyzer - die Token emittiert indiziert sind
  • indexiert = den Text (entweder wie sie ist mit Schlüsselwort Felder oder Tokens aus Token-Feldern) wird durchsucht (aka invertiert)
  • Vectored = Termhäufigkeit pro Dokument wird im Index in leicht abrufbarer Weise gespeichert.

können Sie nur Indexfeld Inhalt ohne speichern es, das Feld auch durchsuchbar ist, kann einfach nicht das Ergebnis markieren, da Highlight ursprünglichen Nachrichteninhalt erfordert, was sollte Store.

+0

Warum also ein Feld erstellen, ohne es zu indizieren? – hguser

+4

Speichern Sie zum Beispiel die Post-ID, indizieren Sie den Post-Inhalt, dann können Sie diese Posts nach der Suche nach Lucene laden. – Robin

Verwandte Themen