`
wbj0110
  • 浏览: 1604232 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

分布式搜索elasticsearch中文分词集成

阅读更多

elasticsearch官方只提供smartcn这个中文分词插件,效果不是很好,好在国内有medcl大神(国内最早研究es的人之一)写的两个中文分词插件,一个是ik的,一个是mmseg的,下面分别介绍下两者的用法,其实都差不多的,先安装插件,命令行:
安装ik插件:

plugin -install medcl/elasticsearch-analysis-ik/1.1.0

下载ik相关配置词典文件到config目录

cd config
wget http://github.com/downloads/medcl/elasticsearch-analysis-ik/ik.zip --no-check-certificate
unzip ik.zip
rm ik.zip

安装mmseg插件:

1
bin/plugin -install medcl/elasticsearch-analysis-mmseg/1.1.0

下载相关配置词典文件到config目录

cd config
wget http://github.com/downloads/medcl/elasticsearch-analysis-mmseg/mmseg.zip --no-check-certificate
unzip mmseg.zip
rm mmseg.zip

分词配置

ik分词配置,在elasticsearch.yml文件中加上

index:
  analysis:                  
    analyzer:     
      ik:
          alias: [ik_analyzer]
          type: org.elasticsearch.index.analysis.IkAnalyzerProvider

1
index.analysis.analyzer.ik.type : “ik”

这两句的意义相同
mmseg分词配置,也是在在elasticsearch.yml文件中

index:
  analysis:
    analyzer:
      mmseg:
          alias: [news_analyzer, mmseg_analyzer]
          type: org.elasticsearch.index.analysis.MMsegAnalyzerProvider

index.analysis.analyzer.default.type : "mmseg"

mmseg分词还有些更加个性化的参数设置如下

index:
  analysis:
    tokenizer:
      mmseg_maxword:
          type: mmseg
          seg_type: "max_word"
      mmseg_complex:
          type: mmseg
          seg_type: "complex"
      mmseg_simple:
          type: mmseg
          seg_type: "simple"

 

这样配置完后插件安装完成,启动es就会加载插件。

定义mapping

在添加索引的mapping时就可以这样定义分词器

{
   "page":{
      "properties":{
         "title":{
            "type":"string",
            "indexAnalyzer":"ik",
            "searchAnalyzer":"ik"
         },
         "content":{
            "type":"string",
            "indexAnalyzer":"ik",
            "searchAnalyzer":"ik"
         }
      }
   }
}

indexAnalyzer为索引时使用的分词器,searchAnalyzer为搜索时使用的分词器。

java mapping代码如下:

XContentBuilder content = XContentFactory.jsonBuilder().startObject()
        .startObject("page")
          .startObject("properties")      
            .startObject("title")
              .field("type", "string")          
              .field("indexAnalyzer", "ik")
              .field("searchAnalyzer", "ik")
            .endObject()
            .startObject("code")
              .field("type", "string")        
              .field("indexAnalyzer", "ik")
              .field("searchAnalyzer", "ik")
            .endObject()    
          .endObject()
         .endObject()
       .endObject()

定义完后操作索引就会以指定的分词器来进行分词。

测试分词可用调用下面api,注意indexname为索引名,随便指定一个索引就行了
http://localhost:9200/indexname/_analyze?analyzer=ik&text=测试elasticsearch分词器

 

附:

ik分词插件项目地址:https://github.com/medcl/elasticsearch-analysis-ik

mmseg分词插件项目地址:https://github.com/medcl/elasticsearch-analysis-mmseg

如果觉得配置麻烦,也可以下载个配置好的es版本,地址如下:https://github.com/medcl/elasticsearch-rtf

分享到:
评论

相关推荐

    分布式搜索 elasticsearch 方案研究 - 基础知识

    分布式搜索是现代大数据处理的关键技术之一,而Elasticsearch作为其中的佼佼者,因其高效、灵活和可扩展性而广泛应用于各种场景。本篇将深入探讨Elasticsearch的基础知识,涵盖其核心概念、环境搭建、配置管理以及...

    ik分词器tar包 7.10.2

    IK分词器是针对Elasticsearch(ES)的一款热门中文分词插件,其全称为“Intelligent Chinese Analyzer for Elasticsearch”。它由Java编写,旨在为中文文档提供高效、准确的分词处理。版本7.10.2是IK分词器的一个...

    elasticSearch(ES)最新版 ik分词插件7.10 elasticsearch-analysis-ik-7.10.0

    Elasticsearch(ES)是一种流行的开源全文搜索引擎,它基于Lucene构建,提供了分布式、RESTful风格的搜索和分析引擎服务。在中文环境下,为了实现精确的分词和搜索,我们需要安装适合版本的分词插件,如“elastic...

    elasticsearch-analysis-ik 和elasticsearch-analysis-mmseg

    分布式搜索elasticsearch1.1.0版本 中文分词集成,现在不支持bin/plugin -install medcl/elasticsearch-analysis-ik/1.1.0 版本的安装,直接解压安装ik和mmseg插件,看博文

    适用于elasticsearch7.12.1版本

    Elasticsearch 7.12.1 是一个强大的开源全文搜索引擎,它基于 Lucene 库进行构建,提供了分布式、实时的搜索和分析引擎服务。这个版本的 Elasticsearch 针对性能和稳定性进行了优化,适用于大规模数据检索和分析场景...

    ES ik分词代码

    Ik分词器的集成使得ES在中文环境下的搜索性能得到显著提升,能够处理复杂的中文语境,提供更精准的搜索结果。 **文件"elasticsearch-analysis-ik-master"** 这个文件名表明它是Ik分词器的一个版本仓库,可能是从...

    elasticsearch集成ik分词器详细文档

    集成IK分词器能够使Elasticsearch更好地支持中文处理,实现精准的中文分词,从而提高搜索质量和效率。IK分词器是针对Elasticsearch的中文分词插件,由Medcl开发并维护,其全称为`elasticsearch-analysis-ik`。 **一...

    elasticsearch + ik中文分词

    Elasticsearch(简称ES)是一款强大的开源搜索引擎,基于全文检索技术,提供实时、分布式、高可扩展的数据搜索和分析能力。在中文环境下,为了实现精准的搜索和匹配,通常需要配合合适的中文分词器。在本案例中,...

    基于hanlp的elasticsearch分词插件

    标题 "基于hanlp的elasticsearch分词插件" 指的是将自然语言处理库HanLP与搜索引擎Elasticsearch相结合,开发出一个用于Elasticsearch的分词插件。这样的插件可以提升Elasticsearch在中文文本处理上的性能,使其能够...

    elasticsearch2.3.1 IK分词器

    总之,Elasticsearch 2.3.1版本的IK分词器是提高中文搜索性能的关键工具,通过与Elasticsearch的集成以及依赖库的支持,能够有效地处理中文文本,提供准确的分词结果,从而提升整体的搜索体验。

    elasticsearch spring 集成

    在现代的Java Web应用中,Elasticsearch作为一个强大的分布式搜索引擎,常常被用于处理大量的数据检索需求。而Spring框架则以其灵活性和全面性成为企业级开发的首选。将Elasticsearch与Spring进行集成,能够帮助...

    springMVC整合elasticsearch,基于maven

    SpringMVC作为Spring框架的一部分,主要用于构建Web应用程序的模型-视图-控制器(MVC)架构,而Elasticsearch则是一种分布式、RESTful风格的搜索和分析引擎,广泛应用于日志分析、实时监控、数据检索等领域。...

    ElasticSearch的IK分词器包

    在构建高效的全文搜索引擎时,Elasticsearch(简称ES)是一个常用的选择,而IK分词器则是ES中针对中文处理的重要组件。本知识点将详细介绍ElasticSearch的IK分词器及其在微服务项目中的应用。 首先,Elasticsearch...

    elasticsearch-7.4.24 + elasticsearch-analysis-ik(对应版本中文分词器)

    Elasticsearch是一个强大的开源搜索引擎,基于Lucene库构建,提供了分布式、实时、可扩展的数据存储和搜索能力。在本主题中,我们关注的是Elasticsearch的7.4.24版本,这是一个稳定且广泛使用的版本,它包含了各种...

    基于.netcore搜索封装ElasticSearch.zip

    这个名为"基于.netcore搜索封装ElasticSearch.zip"的压缩包,显然包含了一个针对.NET Core平台的Elasticsearch客户端库,方便开发者在.NET Core应用中集成和操作Elasticsearch。 Elasticsearch是一个开源的分布式...

    elasticsearch-2.3.1 ik ansj head

    Elasticsearch是一个强大的开源搜索引擎,基于Lucene库构建,提供了分布式、实时、高可用的全文检索服务。在2.3.1版本中,它已经集成了两种常用的中文分词器:IK分词器和Ansj分词器,以及Head插件,这为中文文档的...

    elasticsearch-6.8.0+elasticsearch-analysis-ik-6.8.0 .zip

    Elasticsearch 是一个开源的全文搜索引擎,基于 Lucene 库,提供分布式、实时、可扩展的数据搜索和分析能力。在6.8.0版本中,Elasticsearch 提供了强大的索引管理和查询功能,支持多种数据类型,如文本、数值、日期...

    elasticsearch-analysis-ik 8.11.3 分词器

    这个插件的主要功能是将Lucene的IK分词器集成到Elasticsearch中,为中文文档的全文检索提供高效且精准的分词服务。它支持自定义词典,这意味着用户可以根据实际需求定制自己的词汇库,以提高搜索的准确性和覆盖率。 ...

    es:7.17.3-ik.tar.gz

    Elasticsearch(ES)是一款广泛应用于大数据领域的分布式全文搜索引擎,它以其强大的搜索性能和高可扩展性备受青睐。在本资源中,我们关注的是Elasticsearch 7.17.3版本,并且这个版本已经集成了IK中文分词器,这...

    elasticsearch-analysis-ik-1.2.6

    5. **高性能**:在Elasticsearch中集成IK分词器,可以充分利用其分布式特性,提高分词效率,适应大数据量的处理需求。 在"elasticsearch-analysis-ik-1.2.6.jar"这个文件中,包含了IK分词器的所有核心组件和依赖,...

Global site tag (gtag.js) - Google Analytics