欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 自动补全拼音分词器和自定义分词器

自动补全拼音分词器和自定义分词器

2024/10/24 17:59:59 来源:https://blog.csdn.net/qq_22554999/article/details/142989763  浏览:    关键词:自动补全拼音分词器和自定义分词器

目录

拼音分词器

自定义分词器

总结:


拼音分词器

要实现根据字母做补全,就必须对文档按照拼音分词。在GitHub上恰好有elasticsearch的拼音分词插件。地址:https://github.com/medcl/elasticsearch-analysis-pinyin

用法如下

POST /_analyze
{"text": "如家酒店还不错","analyzer": "pinyin"
}

结果:

图片[2]-自动补全(一)——拼音分词器和自定义分词器-芝士小屋

自定义分词器

默认的拼音分词器会将每个汉字单独分为拼音,而我们希望的是每个词条形成一组拼音,需要对拼音分词器做个性化定制,形成自定义分词器。

elasticsearch中分词器(analyzer)的组成包含三部分:

  • character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符
  • tokenizer:将文本按照一定的规则切割成词条(term)。例如keyword,就是不分词;还有ik_smart
  • tokenizer filter:将tokenizer输出的词条做进一步处理。例如大小写转换、同义词处理、拼音处理等

文档分词时会依次由这三部分来处理文档:

图片[3]-自动补全(一)——拼音分词器和自定义分词器-芝士小屋

声明自定义分词器的语法如下:

PUT /test
{"settings": {"analysis": {"analyzer": { // 自定义分词器"my_analyzer": {  // 分词器名称"tokenizer": "ik_max_word","filter": "py"}},"filter": { // 自定义tokenizer filter"py": { // 过滤器名称"type": "pinyin", // 过滤器类型,这里是pinyin"keep_full_pinyin": false,"keep_joined_full_pinyin": true,"keep_original": true,"limit_first_letter_length": 16,"remove_duplicated_term": true,"none_chinese_pinyin_tokenize": false}}}},"mappings": {"properties": {"name": {"type": "text","analyzer": "my_analyzer","search_analyzer": "ik_smart"}}}
}

测试:

图片[4]-自动补全(一)——拼音分词器和自定义分词器-芝士小屋

总结:

如何使用拼音分词器?

  • 下载pinyin分词器
  • 解压并放到elasticsearch的plugin目录
  • 重启即可

如何自定义分词器?

  • 创建索引库时,在settings中配置,可以包含三部分
  • character filter
  • tokenizer
  • filter

拼音分词器注意事项?

  • 为了避免搜索到同音字,搜索时不要使用拼音分词器

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com