日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

与自定义词典 分词_【201110】ElasticSearch实现中文分词查询

發(fā)布時間:2024/4/17 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 与自定义词典 分词_【201110】ElasticSearch实现中文分词查询 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

介紹

介紹

今天福哥給大家介紹一下ElasticSearch的分詞查詢的使用技巧,通過分詞查詢可以避免不是很匹配的文檔出現(xiàn)在結(jié)果當(dāng)中。

舉例:如果查詢“北京”一般情況下都是想查詢關(guān)于“北京”這個地區(qū)的相關(guān)信息,但是如果沒有進(jìn)行分詞之前,“北”和“京”會作為單獨的查詢匹配項和文檔中的字段進(jìn)行匹配,那查詢出來的結(jié)果就可想而知了。

為了解決這個問題,我們可以告訴ES那些詞是一個整體,不要給我們拆開來單獨匹配。

搜索關(guān)鍵詞分析

可以通過analyze查看搜索關(guān)鍵詞的分析結(jié)果

POST?/_analyze{??"text":?"福哥"}

結(jié)果是“福”和“哥”是分開的

{??"tokens":?[????{??????"token":?"福",??????"start_offset":?0,??????"end_offset":?1,??????"type":?"",??????"position":?0????},????{??????"token":?"哥",??????"start_offset":?1,??????"end_offset":?2,??????"type":?"",??????"position":?1????}??]}

中文分析器

中文分析器elasticsearch-analysis-ik是一個ES的插件,使用這個插件就可以設(shè)置分詞詞條,然后設(shè)置ES的索引的分析器為ik_max_word或者ik_smart,就可以實現(xiàn)分詞匹配的效果了。

下載

github官方網(wǎng)址

https://github.com/medcl/elasticsearch-analysis-ik/releases

福哥的ES的版本是6.5.2,所以下載6.5.2版本的插件

分詞插件的版本必須和ElasticSearch的版本一致

wget?https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.5.2/elasticsearch-analysis-ik-6.5.2.zip

安裝

使用安裝ES的插件

/tongfu.net/env/elasticsearch-6.5.2/bin/elasticsearch-plugin?install?file:///packages/elasticsearch-analysis-ik-6.5.2.zip

測試

使用ik_max_word分析器拆分關(guān)鍵詞

POST?/_analyze{??"analyzer":?"ik_max_word",??"text":?"北京福哥"}

使用ik_smart分析器拆分關(guān)鍵詞

POST?/_analyze{??"analyzer":?"ik_smart",??"text":?"北京福哥"}

配置

創(chuàng)建索引

如果要給現(xiàn)有的索引的字段設(shè)置分析器的話,需要重新建立索引的。因為索引字段的映射(mapping)是不能修改的,只能在重建索引的時候一次性的設(shè)置好。

使用下面的命令創(chuàng)建索引“tfse”,建立兩個字段的映射,并指定它們的類型和分析器。

注意事項:

根節(jié)點是“mappings”不是“mapping”

根節(jié)點“mappings”下面的節(jié)點要和索引名稱一樣

PUT?/tfse{??"mappings":?{????"tfse":?{??????"properties":?{????????"mTitle":?{??????????"type":?"text",??????????"analyzer":?"ik_smart",??????????"search_analyzer":?"ik_smart"????????},????????"mContent":?{??????????"type":?"text",??????????"analyzer":?"ik_smart",??????????"search_analyzer":?"ik_smart"????????}??????}????}??}}

寫入數(shù)據(jù)

接下來就可以向索引“tfse”寫入數(shù)據(jù)了,這里就不再詳述了,大家都會的。

查詢測試

現(xiàn)在我們查詢ES的新索引“tfse”會發(fā)現(xiàn)“北京”不會再被當(dāng)成兩個單獨的詞進(jìn)行匹配了,這樣查詢出來的結(jié)果就會比較準(zhǔn)確了。

分詞庫

詞典

分詞庫的詞典文件存放在 /tongfu.net/env/elasticsearch-6.5.2/config/analysis-ik 下面,默認(rèn)會有一些現(xiàn)成的詞典文件,基本滿足了大部分的搜索分詞需要。

詞典文件以“dic”作為文件擴(kuò)展名,每一行一個詞條,詞典文件最后面要有一個空行。

默認(rèn)詞典

這里福哥把默認(rèn)的詞典給大家介紹一下,不建議刪除哦~~

默認(rèn)詞典介紹:

main,默認(rèn)主詞典

preposition,介詞詞典,例如:愛與喜歡之間的“與”

quantifier,單位詞典,例如:一袋米的“袋”

stopword,停止詞典

suffix,后綴詞典,例如:北京市的“市”

surname,姓氏,例如:上官芙蓉的“上官”

刪除默認(rèn)詞典

有時候我們的搜索環(huán)境很專業(yè),不需要默認(rèn)詞典里面的詞條,有的同學(xué)就把默認(rèn)的“dic”文件全部刪除了,結(jié)果發(fā)現(xiàn)索引壞了。。。

這里要注意一下:默認(rèn)詞典文件不能刪除,但可以清空里面的內(nèi)容。

IKAnalyzer.cfg.xml

在詞典文件存放目錄下面有個 IKAnalyzer.cfg.xml 文件,用來配置更多的詞典文件。

自定義詞典

可以看到在 IKAnalyzer.cfg.xml 文件里面有個ext_dict節(jié)點,可以在里面寫上自定義的詞典文件路徑(相對路徑)。

示例:福哥在ext_dict節(jié)點里面設(shè)置了tfse.dic這個擴(kuò)展詞典文件,然后在tfse.dic詞典文件里面放上自定義的詞條,重啟ES后自定義的詞典里面設(shè)置的詞條就會生效了。

重建索引

如果分詞庫的詞條有變化,直接搜索可能會發(fā)現(xiàn)匹配不到的問題,這不是ES的問題。因為分詞的分析工作是在建立文檔索引的時候進(jìn)行的,所以我們要想根據(jù)新的詞條搜索到文檔,就必須重新建立數(shù)據(jù)索引才行。

詞條有變,索引重建!!!

總結(jié)

今天福哥帶著大家學(xué)習(xí)了ElasticSearch搜索引擎的分析器的使用方法,通過分析器可以讓我們的ES匹配文檔的時候更加符號實際情況,而不會機(jī)械的對每個單字進(jìn)行匹配了。

維護(hù)分詞庫是一個需要時間和經(jīng)驗的工作,需要根據(jù)搜索引擎里面索引的內(nèi)容的領(lǐng)域和文字特征等等因素對我們的分詞庫的詞條進(jìn)行不斷地調(diào)整,我們的搜索引擎才會越來越好用~~

https://m.tongfu.net/home/35/blog/512879.html

總結(jié)

以上是生活随笔為你收集整理的与自定义词典 分词_【201110】ElasticSearch实现中文分词查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。