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
查看評論