国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ES搜索框架--設(shè)置IK分詞器

這篇具有很好參考價(jià)值的文章主要介紹了ES搜索框架--設(shè)置IK分詞器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

ES的默認(rèn)中文分詞效果太差了,稍微長(zhǎng)一點(diǎn)的詞句就完全匹配不到,于是選擇使用安裝IK中文分詞器來實(shí)現(xiàn)索引的分詞。

參考:

https://blog.csdn.net/w1014074794/article/details/119762827

https://www.bbsmax.com/A/6pdDqDaXzw/

ES搜索框架--設(shè)置IK分詞器

一、安裝

官網(wǎng)教程:

https://github.com/medcl/elasticsearch-analysis-ik,注意版本對(duì)應(yīng)的問題

ES搜索框架--設(shè)置IK分詞器

1.下載

從此處下載預(yù)構(gòu)建包:https ://github.com/medcl/elasticsearch-analysis-ik/releases

根據(jù)版本匹配,我使用的是ES7.10.2,因此要下載對(duì)應(yīng)ik7.10.2(如果版本不匹配的話,ik分詞器會(huì)無法使用)

ES搜索框架--設(shè)置IK分詞器

2.解壓

在ES安裝文件夾下的plugins文件夾下創(chuàng)建ik目錄,將zip文件解壓到ik目錄下,刪除zip

ES搜索框架--設(shè)置IK分詞器

3.重新啟動(dòng)ES后測(cè)試

(1)原生分詞器效果

GET /_analyze
{
  "analyzer": "standard",
  "text": "中華人民共和國"
}
ES搜索框架--設(shè)置IK分詞器

(2)ik分詞器效果

①ik_max_word

會(huì)把文本做最細(xì)粒度的解析,會(huì)窮盡各種可能的組合,適合詞條查詢;

GET /_analyze
{
  "analyzer": "ik_max_word",
  "text": "中華人民共和國"
}
ES搜索框架--設(shè)置IK分詞器

②ik_smart

會(huì)做最粗粒度的拆分,適合短語查詢。

GET /_analyze
{
  "analyzer": "ik_smart",
  "text": "中華人民共和國"
}
ES搜索框架--設(shè)置IK分詞器

二、項(xiàng)目使用

刪除之前的索引,創(chuàng)建新的指定分詞器的索引(對(duì)相應(yīng)字段設(shè)定分詞器),并將數(shù)據(jù)重新導(dǎo)入后測(cè)試檢索效果

索引字段詳解:https://www.cnblogs.com/hld123/p/16538466.html

fields可以讓同一文本有多種不同的索引方式,比如所示一個(gè)String類型的字段city,可以使用text類型做全文檢索,使用keyword類型做聚合和排序。??

PUT index_name
{
  "mappings": {         # 設(shè)置 mappings
    "properties": {     # 屬性,固定寫法
      "city": {         # 字段名
        "type": "text", # city 字段的類型為 text
        "fields": {     # 多字段域,固定寫法
          "raw": {      # 子字段名稱
            "type":  "keyword"  # 子字段類型
            "ignore_above": 256  #在ElasticSearch中keyword,text類型字段ignore_above屬性(動(dòng)態(tài)映射默認(rèn)是256) ,表示最大的字段值長(zhǎng)度,超出這個(gè)長(zhǎng)度的字段將不會(huì)被索引,查詢不到,但是會(huì)存儲(chǔ)。
          }
        }
      }
    }
  }
}

通過analyzer屬性指定寫入分詞器采用細(xì)粒度模式ik_max_word;通過search_analyzer屬性指定查詢時(shí)采用智能模式ik_smart

ES搜索框架--設(shè)置IK分詞器

1.創(chuàng)建json對(duì)象作為索引mapping

由于數(shù)據(jù)類型較多,使用json文件,將其裝換為json對(duì)象

(1)pom.xml

<!--json文件轉(zhuǎn)json對(duì)象-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.54</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.3.2</version>
        </dependency>

(2)JsonUtil

package org.project.es.common.util;

import java.io.InputStream;
import org.apache.commons.io.IOUtils;
import com.alibaba.fastjson.JSONObject;
/**
 * 將json文件裝換為json對(duì)象
 * @author Administrator
 */
public class JsonUtil {
    public static JSONObject fileToJson(String fileName) {
        JSONObject json = null;
        try (
                InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName);
        ) {
            json = JSONObject.parseObject(IOUtils.toString(is, "utf-8"));
        } catch (Exception e) {
            System.out.println(fileName + "文件讀取異常" + e);
        }
        return json;
    }
    public static void main(String[] args) {
        String fileName = "doc/policy.json";
        JSONObject json = JsonUtil.fileToJson(fileName);
        System.out.println(json);
    }
}
效果:
ES搜索框架--設(shè)置IK分詞器

2.創(chuàng)建索引

public static void createIndex(RestHighLevelClient client,String index) throws IOException {
        // 1.創(chuàng)建索引 - 請(qǐng)求對(duì)象
        CreateIndexRequest request = new CreateIndexRequest(index);
        // 2.設(shè)置setting,也就是索引的基本配置信息,將setting添加到請(qǐng)求對(duì)象中
        Settings setting = Settings.builder()
                //設(shè)置分片數(shù),主分片數(shù)量一旦設(shè)置后就不能修改了
                .put("index.number_of_shards", 1)
                //索引的刷新時(shí)間間隔,索引更新多久才對(duì)搜索可見(即數(shù)據(jù)寫入es到可以搜索到的時(shí)間間隔,設(shè)置越小越靠近實(shí)時(shí),但是索引的速度會(huì)明顯下降,),
                // 默認(rèn)為1秒,如果我們對(duì)實(shí)時(shí)搜索沒有太大的要求,反而更注重索引的速度,那么我們就應(yīng)該設(shè)置的稍微大一些,這里設(shè)置30s
                .put("index.refresh_interval", "30s")
                //每個(gè)節(jié)點(diǎn)上允許最多分片數(shù)
                .put("index.routing.allocation.total_shards_per_node", 3)
                //將數(shù)據(jù)同步到磁盤的頻率,為了保證性能,插入ES的數(shù)據(jù)并不會(huì)立刻落盤,而是首先存放在內(nèi)存當(dāng)中,
                // 等到條件成熟后觸發(fā)flush操作,內(nèi)存中的數(shù)據(jù)才會(huì)被寫入到磁盤當(dāng)中
                .put("index.translog.sync_interval", "30s")
                //每個(gè)主分片擁有的副本數(shù),副本數(shù)量可以修改
                .put("index.number_of_replicas", 1)
                //一次最多獲取多少條記錄
                .put("index.max_result_window", "10000000")
                .build();
        request.settings(setting);

        // 3.使用工具類將json文件轉(zhuǎn)換為json對(duì)象,添加到請(qǐng)求對(duì)象中
        JSONObject mapping = JsonUtil.fileToJson("doc/policy.json");
        request.mapping(mapping);

        // 4.發(fā)送請(qǐng)求,獲取響應(yīng)
        CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
        boolean acknowledged = response.isAcknowledged();
        // 5.輸出響應(yīng)狀態(tài)
        System.out.println("操作狀態(tài) = " + acknowledged);
    }

查看索引

ES搜索框架--設(shè)置IK分詞器

3.導(dǎo)入數(shù)據(jù)

索引創(chuàng)建好之后將mysql數(shù)據(jù)導(dǎo)入es,便于檢索

4.測(cè)試檢索

之前使用默認(rèn)分詞器的效果很差,檢索結(jié)果不盡如人意,在安裝使用了IK分詞器后再次檢索測(cè)試,發(fā)現(xiàn)效果不錯(cuò),檢索速度也很快文章來源地址http://www.zghlxwxcb.cn/news/detail-478511.html

ES搜索框架--設(shè)置IK分詞器

到了這里,關(guān)于ES搜索框架--設(shè)置IK分詞器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 搜索引擎elasticsearch :安裝elasticsearch (包含安裝組件kibana、IK分詞器、部署es集群)

    搜索引擎elasticsearch :安裝elasticsearch (包含安裝組件kibana、IK分詞器、部署es集群)

    kibana可以幫助我們方便地編寫DSL語句,所以還要裝kibana 因?yàn)槲覀冞€需要部署kibana容器,因此需要讓es和kibana容器互聯(lián)。這里先創(chuàng)建一個(gè)網(wǎng)絡(luò): 這里我們采用elasticsearch的7.12.1版本的鏡像,這個(gè)鏡像體積非常大,接近1G。不建議大家自己pull。 課前資料提供了鏡像的tar包: 大家將

    2024年02月16日
    瀏覽(27)
  • Elasticsearch7.15.2 安裝ik中文分詞器后啟動(dòng)ES服務(wù)報(bào)錯(cuò)的解決辦法

    Elasticsearch7.15.2 安裝ik中文分詞器后啟動(dòng)ES服務(wù)報(bào)錯(cuò)的解決辦法

    下載elasticsearch ik中文分詞器,在elasticsearch安裝目錄下的plugins文件夾下創(chuàng)建名為ik的文件夾,將下載的ik中文分詞器解壓縮到新建的ik文件夾下,再次運(yùn)行 ./bin/elasticsearch啟動(dòng)ES服務(wù)時(shí)出現(xiàn)以下錯(cuò)誤: Exception in thread \\\"main\\\" java.nio.file.NotDirectoryException: /Users/amelia/work/elasticsearch-7.1

    2024年02月12日
    瀏覽(34)
  • Docker安裝ElasticSearch、Kibana、IK分詞器以及設(shè)置ES賬戶密碼

    Docker安裝ElasticSearch、Kibana、IK分詞器以及設(shè)置ES賬戶密碼

    版本聲明: 系統(tǒng) :CentOS 7.9(云服務(wù)器) ES版本 :7.6.1 Kibana :7.6.1 Ik分析器版本 :7.6.1 1、拉取鏡像 2、創(chuàng)建掛載目錄 設(shè)置所有用戶讀寫執(zhí)行權(quán)限 : sudo chmod -R 777 /docker_config/elasticsearch/ 3、創(chuàng)建elasticsearch.yml 配置文件 4、創(chuàng)建容器 參數(shù)說明 : -p 端口映射 -e discovery.type=single

    2023年04月09日
    瀏覽(34)
  • Elasticsearch之ik中文分詞篇

    es在7.3版本已經(jīng)支持中文分詞,由于中文分詞只能支持到單個(gè)字進(jìn)行分詞,不夠靈活與適配我們平常使用習(xí)慣,所以有很多對(duì)應(yīng)中文分詞出現(xiàn),最近使用的是ik分詞器,就說說它吧。 安裝可以百度下有很多教程,需要注意的是ik分詞器的版本要跟es版本對(duì)應(yīng)上,避免出現(xiàn)不必要

    2024年02月02日
    瀏覽(29)
  • 本地elasticsearch中文分詞器 ik分詞器安裝及使用

    本地elasticsearch中文分詞器 ik分詞器安裝及使用

    ElasticSearch 內(nèi)置了分詞器,如標(biāo)準(zhǔn)分詞器、簡(jiǎn)單分詞器、空白詞器等。但這些分詞器對(duì)我們最常使用的中文并不友好,不能按我們的語言習(xí)慣進(jìn)行分詞。 ik分詞器就是一個(gè)標(biāo)準(zhǔn)的中文分詞器。它可以根據(jù)定義的字典對(duì)域進(jìn)行分詞,并且支持用戶配置自己的字典,所以它除了可

    2024年02月05日
    瀏覽(36)
  • 中文分詞入門:使用IK分詞器進(jìn)行文本分詞(附Java代碼示例)

    中文分詞是將連續(xù)的中文文本切分成一個(gè)個(gè)獨(dú)立的詞語的過程,是中文文本處理的基礎(chǔ)。IK分詞器是一個(gè)高效準(zhǔn)確的中文分詞工具,采用了\\\"正向最大匹配\\\"算法,并提供了豐富的功能和可定制選項(xiàng)。 細(xì)粒度和顆粒度的分詞模式選擇。 可自定義詞典,提高分詞準(zhǔn)確性。 支持中文

    2024年02月17日
    瀏覽(44)
  • es安裝ik分詞器

    es安裝ik分詞器

    IK分詞器下載地址: https://github.com/medcl/elasticsearch-analysis-ik/releases 下載ES版本對(duì)應(yīng)的分詞器即可 安裝ik分詞器 將下載好的zip包解壓,生成一個(gè)ik文件夾 將ik文件夾移動(dòng)到ES安裝目錄下的 plugins 文件夾下(每臺(tái)ES節(jié)點(diǎn)都要執(zhí)行相同的操作) 重啟ES集群 自定義分詞庫 用 vim 在ik中的

    2023年04月10日
    瀏覽(19)
  • Elasticsearch安裝中文分詞器IK Analyzer

    Elasticsearch安裝中文分詞器IK Analyzer

    提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 本文介紹IK Analyzer分詞器的安裝配置、使用以及ES數(shù)據(jù)遷移。 克隆IK分詞器項(xiàng)目,根據(jù)README的描述選擇對(duì)應(yīng)版本的分支。瀏覽器訪問ES的ip+端口就能看到版本信息,所以我需要切到master分支。 打開pom需要

    2024年02月12日
    瀏覽(33)
  • ES(二)| 安裝ES、Kibana、IK分詞器、拼音分詞器(自動(dòng)補(bǔ)全)

    ES(二)| 安裝ES、Kibana、IK分詞器、拼音分詞器(自動(dòng)補(bǔ)全)

    上一篇:ES(一)| ES簡(jiǎn)介、倒排索引、索引庫操作語法、文檔操作語法、Java使用RestClient進(jìn)行ES操作 安裝包下載: 鏈接:https://pan.baidu.com/s/1Y1O0B8aG7qzRLFFVYo9nHw 提取碼:hdyc 因?yàn)槲覀冞€需要部署 kibana 容器,因此需要讓 es 和 kibana 容器互聯(lián)。這里先創(chuàng)建一個(gè)網(wǎng)絡(luò): 這里我采用

    2023年04月08日
    瀏覽(24)
  • Elasticsearch教程(35) ik中文分詞器+pinyin拼音分詞器+同義詞

    Elasticsearch教程(35) ik中文分詞器+pinyin拼音分詞器+同義詞

    閑來無事,發(fā)現(xiàn)上一篇ES博客還是 去年9月份 寫的中文ik分詞器 pinyin 首字母 search_as_you_type 組合使用,該篇文章還挖了一個(gè) 大坑 沒有填,快一年了,是時(shí)候填下坑了。 針對(duì)股票查詢這個(gè)特點(diǎn)場(chǎng)景,再結(jié)合一般使用者的搜索習(xí)慣,暫時(shí)確定如下7種期望效果。 上一篇博客Elast

    2023年04月09日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包