2014-01-29 48 views
0

我想用中文頁面的Solr。它工作正常,但我找不到一些字符。Solr沒有找到所有中文符號

我用SmartChineseSentenceTokenizerFactory在我的schema.xml中是這樣的:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <tokenizer class="solr.SmartChineseSentenceTokenizerFactory"/> 
     <filter class="solr.SmartChineseWordTokenFilterFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 

    <analyzer type="query"> 
     <tokenizer class="solr.SmartChineseSentenceTokenizerFactory"/> 
     <filter class="solr.SmartChineseWordTokenFilterFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.PositionFilterFactory" /> 
    </analyzer> 
</fieldType> 

我已經試過CJKTokenizerFactory還,結果更慘。 在一個示例頁面我已經得到了以下的文字(從維基百科中國複印件)

就必須參加國中教育會考

它收錄在Solr的,我可以搜索所有標誌,除了教

這個字符表示類似於:教,教,教,宗教 - 所以這是一個正常的詞。

這只是一個不能找到單個字符的例子。

+0

來自solr wiki(http://wiki.apache.org/solr/LanguageAnalysis#Chinese.2C_Japanese.2C_Korean)的說明:「請務必在查詢時使用PositionFilter(僅限於),因爲這些語言不使用空格在詞語之間「。你已經這樣做了嗎? –

+0

我不是100%確定這個筆記的含義。我只在索引分析器和查詢分析器中使用了PositionFilterFactory。我已經刪除了索引分析器中的位置過濾器,但這沒有任何作用 –

+0

這表示您應該在查詢分析器端有。不說它應該在索引方面。改變模式之後最好的選擇是對所有東西重新進行索引。 –

回答

0

我有類似的問題,但我相信這是因爲聰明的中國人使用字典,尋找同源而不是單個字符。我也可以在沒有問題的情況下搜索教育或教授,但教不會產生任何問題。因此,我在我們的網站上進行了兩次搜索,一次使用solr,另一次是針對文本的簡單搜索,然後我只是向用戶指示每個搜索的工作方式。

你最終的解決方案是什麼?