[教程三] 寫一個搜尋:自定義詞庫;使用 Laravel Scout,Elasticsearch,ik 分詞

lijinma發表於2017-03-06

程式碼: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
把時間當作朋友

修改完自定義詞庫你還需要做兩步:

  1. 重啟 ElasticSearch
  2. 重新 index 你的資料到 ElasticSearch執行命令:
$ php artisan scout:flush 'App\Post' 
$ php artisan scout:import 'App\Post'

這個時候你會覺得 Scout 簡直太爽了,重新 Index 超級方便。

沒新增”把時間當作朋友“為分詞的時候搜尋截圖:

file

新增”把時間當作朋友“為分詞的時候搜尋截圖:

file

我猜你已經明白了我的意思,希望這個簡單的例子可以讓你明白自定義詞庫。

最後的最後,推薦一本李笑來的書《把時間當作朋友》,電子版完全免費:

http://zhibimo.com/read/xiaolai/ba-shi-jia...

你肯定懂得,我寫這篇文章,其實就是為了推薦這一本書,哈哈,目的達到了。
你實在無法想象,如果沒有這本書,就不可能有這篇文章。

別忘了 Star 我的專案:https://github.com/lijinma/laravel-scout-e...

本作品採用《CC 協議》,轉載必須註明作者和本文連結
寫文字大部分時候是因為我希望能幫助到你,小部分時候是想做總結或做記錄。我的微信是 lijinma,希望和你交朋友。 以下是我的公眾賬號,會分享我的學習和成長。

相關文章