Solr中文欄位的查詢與欄位分詞後如何彙總查詢的問題,solr分詞

來源:互聯網
上載者:User

Solr中文欄位的查詢與欄位分詞後如何彙總查詢的問題,solr分詞

問題描述:

問題一:

 比如資料裡面有個叫name的欄位,儲存的是使用者名稱,如果name欄位使用的fieldType配置了英文分詞,那麼我們對於這個欄位的查詢結果會有錯誤。比如,查詢“張三”,那麼像“張”、“三哥”、“張一三”等資料都會被查出來,含有“張”或者“三”的資料都會被查出來,也就是說,配置了英文分詞的,對中文預設會是按字分詞,並且只要滿足一個字就會被匹配上。

問題二:

在對某個使用配置了分詞的fieldType的中文欄位進行彙總查詢的的時候,會按照分詞的方式進行彙總,而不是一個欄位作為一個整體進行彙總。比如欄位內容為:“中國人民”,配置英文分詞,沒有配置中文分詞的,將會按字分詞,會按“中”、“華”、“人”、“民”去彙總,配置了中文分詞的,有可能會按照“中國”、“人民”去進行彙總,而我們想要的結果是整個欄位去進行彙總,所以這都不符合我們的要求。

解決辦法:

這兩個問題其實是一個問題,solr欄位中文分詞的問題。針對這個問題有一下兩個辦法:

(1)、對於中文欄位,使用solr定義好了的沒有配置英文分詞的fieldType,比如string等,而不要用像text_general進行了英文分詞的fieldType,這樣對對中文就會是一個欄位看做一個整體。查詢也不會出現錯亂,也可用萬用字元。

(2)、對我們將要包含中文、或者將要進行彙總查詢的欄位。我們要使用自訂的fieldType,並引用它,範例如下:

<field name="name" type="text_not" store=true index=true />

<fieldType name="text_not" class="solr.TextField" omitNorms="true" />

 fieldType中的name是自訂供field引用的fieldType的名字,class屬性目前還不清楚,solr定義好的fieldType都是這樣的寫的,omitNorms表示該欄位是否需要分詞,true為不需要,預設是需要,所以不分詞的欄位可以不明確定義omitNorms屬性為true,但是最好自己明確定義,這樣讓schema.xml明確些,方便閱讀。


   
0
0
查看評論

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.