2012-06-25 9 views

Antwort

23

Sie unterscheiden sich darin, wie sie den analysierten Text in Token aufteilen.

Die StandardTokenizer tut dies auf der Grundlage der folgenden (aus lucene javadoc genommen):

  • Splits Wörter auf Satzzeichen, Zeichensetzung zu entfernen. Ein Punkt, auf den kein Leerzeichen folgt, wird jedoch als Teil eines Tokens betrachtet.
  • Splits Worte Bindestriche, es sei denn, es gibt eine Zahl im Token, wobei in diesem Fall die gesamte Token als Produkt Nummer interpretiert und aufgespalten wird nicht.
  • Erkennt E-Mail-Adressen und Internet Hostnamen als ein Token.

Die WhitespaceTokenizer tut dies basierend auf Leerzeichen:

WhitespaceTokenizer A ist ein tokenizer, den Text in Leerzeichen unterteilt. Benachbarte Sequenzen von Nicht-Whitespace-Zeichen bilden Token.

Sie sollten den Tokenizer auswählen, der am besten zu Ihrer Anwendung passt. In jedem Fall müssen Sie den gleichen Analyzer/Tokenizer zum Indexieren und Suchen verwenden!

+0

Danke csupnig! Wenn Sie sagen "Verwenden Sie den gleichen Analyzer/Tokenizer" für den Index und die Suche, meinten Sie, der Analysator muss mit dem Typ des Tokenizers übereinstimmen, der verwendet wird, ich richtig? – trillions

+2

Ja, sie sollten das gleiche tun, um ähnliche Tokens zu erzeugen. Es gibt nur wenige Fälle, in denen Sie im Abfrageparser andere Tokenizer als die Tokenizer verwenden möchten, die Sie beim Indexieren verwendet haben. – csupnig

+0

Danke csupnig :) – trillions