Elasticsearch2.4.4自定义词典&同义词配置

本文介绍了如何在Elasticsearch 2.4.4中进行自定义词典和同义词配置。自定义词典步骤包括创建配置文件夹、编辑词典文件并重启服务。同义词配置则涉及创建同义词文件,更新索引设置,并通过API测试同义词效果。在实践中,需要注意词典和同义词文件的编码格式,以及服务重启要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自定义词典:

一、添加词典

mkdir -p elasticsearch-2.4.4/plugins/analysis-ik/config/custom

vi elasticsearch-2.4.4/plugins/analysis-ik/config/custom/ext_word.txt

博世
bosch

注意事项:

1,每个单词一行

2,编码为utf-8 无bom

二、修改ik配置

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

<properties>

    <comment>IK Analyzer 扩展配置</comment>

    <!--用户可以在这里配置自己的扩展字典 -->

    <entry key="ext_dict">custom/ext_word.dic;custom/single_word_low_freq.dic</entry>

     <!--用户可以在这里配置自己的扩展停止词字典-->

    <entry key="ext_stopwords">custom/ext_stopword.dic</entry>

    <!--用户可以在这里配置远程扩展字典 -->

    <!-- <entry key="remote_ext_dict">words_location</entry> -->

    <!--用户可以在这里配置远程扩展停止词字典-->

    <!-- <entry key="remote_ext_stopwords">words_location</entry> -->

</properties>

三、重启es

同义词配置:

一、添加词典:

mkdir -p elasticsearch-2.4.4/config/analysis

vi elasticsearch-2.4.4/config/analysis/synonym.txt

博世,bosch

注意事项:

1,每行一组同义词,以逗号分隔

2,编码为utf-8 无bom

3,修改synonym.txt后需要重启es

二、索引配置修改

新建业务索引2_syn,添加同义词过滤器synonym_filter

setting设置如下:

{

  "index": {

    "analysis": {

      "filter": {

        "light_english_stemmer": {

          "type""stemmer",

          "language""light_english"

        },

        "special_character_spliter": {

          "type""word_delimiter",

          "preserve_original""true"

        },

        "synonym_filter": {

          "type""synonym",

          "synonyms_path""analysis/synonym.txt"

        }

      },

      "analyzer": {

        "charSplit": {

          "filter": [

            "lowercase",

            "synonym_filter"

          ],

          "type""custom",

          "tokenizer""ngram_tokenizer"

        },

        "optik_smart": {

          "filter": [

            "lowercase",

            "light_english_stemmer",

            "special_character_spliter",

            "synonym_filter"

          ],

          "type""custom",

          "tokenizer""ik_smart"

        },

        "optik": {

          "filter": [

            "lowercase",

            "light_english_stemmer",

            "special_character_spliter",

            "synonym_filter"

          ],

          "type""custom",

          "tokenizer""ik"

        }

      },

      "tokenizer": {

        "ngram_tokenizer": {

          "token_chars": [

            "letter",

            "digit",

            "punctuation"

          ],

          "min_gram""1",

          "type""nGram",

          "max_gram""30"

        }

      }

    }

  }

}

 

三、测试同义词

GET   /2_syn/_analyze?analyzer=optik&pretty=true&text=博世

结果:

{

  "tokens": [

    {

      "token""博世",

      "start_offset"0,

      "end_offset"2,

      "type""CN_WORD",

      "position"0

    },

    {

      "token""bosch",

      "start_offset"0,

      "end_offset"2,

      "type""SYNONYM",

      "position"0

    }

  ]

}

 

四、数据迁移

使用reindex api迁移数据

POST _reindex

{

  "source": {

    "index""2"

  },

  "dest": {

    "index""2_syn"

  }

}

 

问题:

1,修改同义词词典synonym.txt 需要重启es

2,ik无法正确分词的token无法找到同义词,需要配合自定义词库使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值