2013-01-23 30 views
2

我想使用solr keepwordfilterfactory,但沒有爲此獲取適當的標記。用例是,我有一個字符串說hi i am coming, bla-bla go out.現在從下面的字符串我想保留像hi icoming,, bla-bla, bla-bla等字。所以什麼標記與過濾器工廠使用,以便我能夠得到任何這樣的組合在facet 。嘗試了不同的分詞器,但沒有得到確切的結果。我正在使用solr 4.0。是否有任何這樣的標記器基於所使用的保留字進行標記。keepwordfilterfactory在solr中的標記器

+0

你想「嗨,我」是一個單一的令牌或是一個錯字嗎?你到目前爲止嘗試了哪些標記物以及哪些是問題? – jpountz

+0

@jpountz:「嗨,我」是一個單一的令牌,而不是一個錯字。有一些固定的單詞可以是單個或多個,並且需要根據給定字符串中的這些單詞列表進行標記。我已經嘗試了以下標記直到現在:'solr.KeywordTokenizerFactory,solr.LetterTokenizerFactory,solr.WhitespaceTokenizerFactory,solr.LowerCaseTokenizerFactory,solr.StandardTokenizerFactory,solr.ClassicTokenizerFactory,solr.PatternTokenizerFactory'。問題是如果我有多個單詞分隔空間,我無法將它與單個單詞一起。我只得到'噓聲來','不'嗨我''。 – user850234

回答

1

什麼是標記化(將長文本拆分爲單個標記)的「規則」。上面的例子似乎暗示有時候你有單個單詞標記,有時候還有一個多詞(「hi i」)。多字的情況在這裏是有問題的,但是你可以通過結合ShingleFilterFactory來給你提供多字詞標記以及原始標記,然後你只保留你想要的項目。

我不確定KeepWord過濾器是否正確處理多字字符串。如果沒有,你可能希望在拼接過程中有一個特殊的分隔符,然後regex將它過濾回空間作爲最後一步。

+0

基本上我有一個預定義的固定字的集合,需要從特定字段的給定字符串進行標記,並對這些字段僅對該字段進行標記。我的問題是KeepWord過濾器與大多數tokenizer一起工作,直到單詞之間沒有空白,並給出預期的輸出,但是當有任何空白時,我沒有得到該單詞。就像我的問題中的字符串一樣,我會'來,'和'bla-bla',但不會'嗨i'。所以我需要一些機制來查找定義的單詞,並且如果它是多字的話,不會在空白符號之間進行標記。多字的KeepWord過濾器應該可以工作。 – user850234

+0

試試ShingleFilterFactory我在Whitespace tokenizer之後和KeepWordFilterFactory之前提到過。在Admin UI分析屏幕(我假設Solr 4)中檢查您的文本在經歷不同階段時的樣子。 –

+0

謝謝你的工作 – user850234