2017-07-27 64 views
0

我試圖將LetterTokenizerFactoryWhitespaceTokenizerFactory組合起來,並且無法找到如何使用copyField複製內容的方法。在Solr中組合多個標記器

讓我描述了我的想法:

  • 我在文字,例如兩個條目^ h & M和惠普
  • 用戶應該能夠找到^ h &中號進入h&m - 我用WhitespaceTokenizerFactory爲了這個目的,無需特殊字符分割令牌
  • 用戶應該能夠找到惠普進入「惠普」 - LetterTokenizerFactory供應這種情況下,令牌分裂特殊字符
  • 現在我想結合了該斷詞

我怎麼能實現它不宣而2種不同類型具有不同的標記生成器工廠,然後複製值至 第二種類型的字段?

回答

1

您可以使用WhitespaceTokenizerFactory作爲主標記化器,然後添加WordDelimiterGraphFilter將您的標記進一步分割爲更小的標記。

從已WordDelimiterGraphFilter的例子(以前稱爲WordDelimiterFilter,但現在這是過時 - 這樣的名稱將取決於Solr的版本,您正在使用):

非字母數字字符(丟棄):「熱點「 - >」熱點「,」點「

這將允許packard匹配hewlett。請注意,這也將允許'm'匹配h&m,因爲您正在分割非字母數字字符。您可以使用過濾器的protected設置來指定不應觸及的單詞列表,或者如果您希望&保持不變,請使用types參數重新定義&應視爲哪種類型。

+0

謝謝,它可以工作!但我希望能找到一種方法,即使我沒有指定任何特殊的符號,也總是有特殊字符的額外原始標記。例如「熱點」 - >「熱點」,「點」,「熱點」; 「h&m」 - >「h」,「m」,「h&m」等。 – bsiamionau

+1

我剛纔注意到'preserveOriginal'選項保留原始值作爲標記 – bsiamionau