程式碼:https://github.com/lijinma/laravel-scout-e... ,歡迎 Star
之前兩篇文章:
寫一個搜尋:使用 Laravel Scout,Elasticsearch,ik 分詞
解決搜尋結果高亮問題
如何自定義分詞
根據之前的程式碼,你應該已經可以做出來一個搜尋的 Demo 出來了,這時候,一個問題跑到了你的腦海中:
ik 提供的分詞不夠用怎麼辦?
比如說,在搜尋”把時間當作朋友“的時候,我希望結果不包含分詞:"時間","朋友"等,因為這是一個專有的書名。
這個時候,你就用使用 ik 提供強大的自定義詞庫了,進入 ElasticSearch 資料夾裡面:
$ ls -la plugins/analysis-ik/config/custom/
看到沒有,這裡面就是所有自定義的詞庫,你可以開始玩了,比如說,我現在要新增 把時間當作朋友
, 我可以直接修改 plugins/analysis-ik/config/custom/mydict.dic
如下:
medcl
elastic
elasticsearch
kogstash
kibana
marvel
shield
watcher
beats
packetbeat
filebeat
topbeat
metrixbeat
kimchy
把時間當作朋友
修改完自定義詞庫你還需要做兩步:
- 重啟 ElasticSearch
- 重新 index 你的資料到 ElasticSearch執行命令:
$ php artisan scout:flush 'App\Post'
$ php artisan scout:import 'App\Post'
這個時候你會覺得 Scout 簡直太爽了,重新 Index 超級方便。
沒新增”把時間當作朋友“為分詞的時候搜尋截圖:
新增”把時間當作朋友“為分詞的時候搜尋截圖:
我猜你已經明白了我的意思,希望這個簡單的例子可以讓你明白自定義詞庫。
最後的最後,推薦一本李笑來的書《把時間當作朋友》,電子版完全免費:
http://zhibimo.com/read/xiaolai/ba-shi-jia...
你肯定懂得,我寫這篇文章,其實就是為了推薦這一本書,哈哈,目的達到了。
你實在無法想象,如果沒有這本書,就不可能有這篇文章。
別忘了 Star 我的專案:https://github.com/lijinma/laravel-scout-e...
本作品採用《CC 協議》,轉載必須註明作者和本文連結