一、ES-IK分詞器
1.1 初識(shí)ES-IK分詞器
??ES IK分詞器是一種基于中文文本的分詞器,它是Elasticsearch中文分詞的一種實(shí)現(xiàn)。它采用了自然語(yǔ)言處理技術(shù),可以將中文文本進(jìn)行切分,抽取出其中的詞匯,從而提高搜索引擎對(duì)中文文本的搜索和檢索效率。
??ES IK分詞器的原理是采用了一種叫做“正向最大匹配”(Forward Maximum Matching,簡(jiǎn)稱FMM)和“逆向最大匹配”(Backward Maximum Matching,簡(jiǎn)稱BMM)的分詞算法,通過(guò)對(duì)文本進(jìn)行多次切分,最終確定最優(yōu)的分詞結(jié)果。
??ES IK分詞器可以用于各種中文文本處理應(yīng)用,包括搜索引擎、文本挖掘、信息檢索等。它支持多種分詞模式,包括最細(xì)粒度切分、智能切分和最大切分等模式,可以根據(jù)具體應(yīng)用場(chǎng)景進(jìn)行靈活配置。
1.2 IK分詞器-拓展和停用
- 要拓展或停用ik分詞器的詞庫(kù),需要修改ik分詞器目錄中的config目錄中的IkAnalzer.cfg.xml文件:
?<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 擴(kuò)展配置</comment>
<!--用戶可以在這里配置自己的擴(kuò)展字典 -->
<entry key="ext_dict">ext.dic</entry>
<!--用戶可以在這里配置自己的擴(kuò)展停止詞字典-->
<entry key="ext_stopwords">stopword.dic</entry>
<!--用戶可以在這里配置遠(yuǎn)程擴(kuò)展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用戶可以在這里配置遠(yuǎn)程擴(kuò)展停止詞字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
-
進(jìn)行拓展詞匯的時(shí)候需要?jiǎng)?chuàng)建出所定義的擴(kuò)展字典文件,例如本文使用的是ext.dic,再往文件中填寫(xiě)詞匯即可,每個(gè)詞匯占一行,如下圖:
-
進(jìn)行停用詞庫(kù)的時(shí)候打開(kāi)stopword.dic文件,再往文件中添加詞匯即可,每個(gè)詞匯占一行,如下圖(一般停用的都是語(yǔ)氣詞、嚴(yán)禁品等):
1.3 索引庫(kù)
1.3.1 mapping屬性
??在Elasticsearch中,mapping屬性是指用于定義索引中文檔的結(jié)構(gòu)和屬性的方式。它描述了索引中文檔的字段名稱、類型、分詞器等元信息,這些元信息可以用于搜索、過(guò)濾和排序。
具體來(lái)說(shuō),mapping屬性定義了索引中每個(gè)字段的以下信息:
- 字段類型(type):指定字段的數(shù)據(jù)類型,例如文本、數(shù)值、日期等。
- 分詞器(analyzer):指定字段的分詞器,用于對(duì)文本進(jìn)行分詞處理。
- 是否索引(index):指定字段是否需要被索引,如果需要,Elasticsearch將對(duì)該字段建立反向索引以支持全文檢索,默認(rèn)為true。
- 子字段(properties):該字段的子字段;
??除此之外,mapping屬性還可以指定文檔中的嵌套對(duì)象、數(shù)組(數(shù)組不是類型,只是可以傳多個(gè)數(shù)據(jù))等復(fù)雜類型,并對(duì)其進(jìn)行相應(yīng)的定義和配置。
1.3.2 索引庫(kù)的CRUD
- 創(chuàng)建索引庫(kù)和映射
基本語(yǔ)法:
- 請(qǐng)求方式:PUT
- 請(qǐng)求路徑:/索引庫(kù)名,可以自定義
- 請(qǐng)求參數(shù):mapping映射
格式:
PUT /索引庫(kù)名稱
{
"mappings": {
"properties": {
"字段名":{
"type": "text",
"analyzer": "ik_smart"
},
"字段名2":{
"type": "keyword",
"index": "false"
},
"字段名3":{
"properties": {
"子字段": {
"type": "keyword"
}
}
},
// ...略
}
}
}
- 查看索引庫(kù)
基本語(yǔ)法:
-
請(qǐng)求方式:GET
-
請(qǐng)求路徑:/索引庫(kù)名
-
請(qǐng)求參數(shù):無(wú)
格式:
GET /索引庫(kù)名
- 修改索引庫(kù)
??倒排索引結(jié)構(gòu)一旦數(shù)據(jù)結(jié)構(gòu)改變(比如改變了分詞器),就需要重新創(chuàng)建倒排索引。因此索引庫(kù)一旦創(chuàng)建,無(wú)法修改mapping,但是可以添加新的字段到mapping中,也不會(huì)對(duì)倒排索引產(chǎn)生影響。
語(yǔ)法說(shuō)明:
PUT /索引庫(kù)名/_mapping
{
"properties": {
"新字段名":{
"type": "integer"
}
}
}
- 刪除索引庫(kù)
語(yǔ)法:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-601467.html
-
請(qǐng)求方式:DELETE
-
請(qǐng)求路徑:/索引庫(kù)名
-
請(qǐng)求參數(shù):無(wú)
格式:
DELETE /索引庫(kù)名
1.3.3 文檔的DSL
- 增加文檔
語(yǔ)法:
POST /索引庫(kù)名/_doc/文檔id
{
"字段1": "值1",
"字段2": "值2",
"字段3": {
"子屬性1": "值3",
"子屬性2": "值4"
},
// ...
}
- 刪除文檔
語(yǔ)法:
DELETE /{索引庫(kù)名}/_doc/id值
- 修改文檔
a. 全量修改:
全量修改是覆蓋原來(lái)的文檔,其本質(zhì)是:
- 根據(jù)指定的id刪除文檔
- 新增一個(gè)相同id的文檔
注意:如果根據(jù)id刪除時(shí),id不存在,第二步的新增也會(huì)執(zhí)行,也就從修改變成了新增操作了。
語(yǔ)法:
PUT /{索引庫(kù)名}/_doc/文檔id
{
"字段1": "值1",
"字段2": "值2",
// ... 略
}
b. 增量修改:
增量修改是只修改指定id匹配的文檔中的部分字段。
語(yǔ)法:
POST /{索引庫(kù)名}/_update/文檔id
{
"doc": {
"字段名": "新的值",
}
}
- 查詢文檔
語(yǔ)法:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-601467.html
GET /{索引庫(kù)名稱}/_doc/{id}
``
b. 增量修改:
增量修改是只修改指定id匹配的文檔中的部分字段。
語(yǔ)法:
POST /{索引庫(kù)名}/_update/文檔id
{
"doc": {
"字段名": "新的值",
}
}
- 查詢文檔
語(yǔ)法:
GET /{索引庫(kù)名稱}/_doc/{id}
到了這里,關(guān)于ES-IK分詞器的概念和基本使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!