圖片中是索引拆詞之後的存儲內容。
業務輸入的搜索詞是上海浦東滬東新村
我們可以看到所有的詞都在索引裡面是有了的
但是就是搜索不出來
最後通過solr admin提供的拆詞分析看出了問題的所在
可以看到跟實際索引存儲的內容唯一不同的是多了一個 上海浦東
關鍵問題在於為什麼建的索引中是有上海浦東這些詞的,為什麼分詞器沒有拆分成上海浦東這個詞呢
問題是我們的keyword索引是通過copyField來實現多個字段的組合
<copyField source="name" dest="keyword"/>
<copyField source="address" dest="keyword"/>
<copyField source="city" dest="keyword"/>
<copyField source="region" dest="keyword"/>
<copyField source="alias" dest="keyword"/>
<copyField source="addr_alias" dest="keyword"/>
<copyField source="address_num" dest="keyword"/>
不是直接的keyword字段來做的索引
那也就是說city和reigon這2個字段是拼起來的,所以不會被拆成上海浦東
但是如果原始的keyword不是copy的,是完整的一個字符串,那麼就會被拆分成上海浦東,去掉copyField 改成在建索引的時候程序去拼接keyword然後建索引就可以解決問題。
相關推薦
推薦中...