2012-06-25 54 views

回答

23

它們在將分析的文本分成標記的方式上有所不同。

StandardTokenizer執行此基於以下(從lucene的Javadoc中取出):在標點符號

  • 拆分話,除去標點符號。 但是,沒有被空白後面的點被認爲是令牌的一部分 。
  • 在連字符處拆分單詞,除非 令牌中有一個數字,在這種情況下,整個令牌被解釋爲產品號碼 並且未被拆分。
  • 將電子郵件地址和互聯網 識別爲一個令牌。

WhitespaceTokenizer做此基礎上的空白字符:

一個WhitespaceTokenizer是,在空白劃分文本標記生成器。相鄰的非空白字符序列形成令牌。

您應該選擇最適合您的應用程序的標記器。在任何情況下,您都必須使用相同的分析器/標記器進行索引和搜索!

+0

謝謝csupnig!當你說「使用相同的分析器/標記器」進行索引和搜索時,你的意思是分析器需要與正在使用的標記器的類型相匹配,對不對? – trillions

+2

是的,他們應該這樣做,以產生類似的標記。只有極少數情況下,您希望在查詢解析器中使用不同的標記器,而不是在編制索引時使用的標記器。 – csupnig

+0

謝謝csupnig :) – trillions