elasticsearch实现中文分词+远程自定义词库(nginx)

中文分词

elasticsearch本身自带的中文分词,就是单纯把中文一个字一个字的分开,根本没有词汇的概念。但是实际应用中,用户都是以词汇为条件,进行查询匹配的,如果能够把文章以词汇为单位切分开,那么与用户的查询条件能够更贴切的匹配上,查询速度也更加快速。

分词器下载网址:https://github.com/medcl/elasticsearch-analysis-ik

 

 安装

下载好的zip包,请解压后放到 /usr/share/elasticsearch/plugins/ik(可以不叫ik但是必须再此目录下,且不能出现其他的文件)

elasticsearch实现中文分词+远程自定义词库(nginx)_第1张图片

然后重启es

基于中文分词搭建索引

  PS:添加了中文分词的词库之后,以后的type就不能使用默认的mapping了,默认的中文分词是一字一词的

       注意下面的name用的是中文分词

PUT movie_chn
{
  "mappings": {
    "movie_type_chn":{
      "properties": {
        "id":{
          "type": "long"
        },
        "name":{
          "type": "text"
          , "analyzer": "ik_smart"
        },
        "doubanScore":{
          "type": "double"
        },
        "actorList":{
          "properties": {
            "id":{
              "type":"long"
            },
            "name":{
              "type":"keyword"
            }
          }
        }
      }
    }
  }
}

为什么要用远程词库?

    过滤一些不能够出现的词语,以及一些流行词语。

实现方式:同将远程词库放在Nginx中当静态资源使用,这样添加的词语不用重启两个服务都就可以直接使用,

   需要的配置:

修改/usr/share/elasticsearch/plugins/ik/config/中的IKAnalyzer.cfg.xml



        IK Analyzer 扩展配置
        
        
         
        
        
         http://192.168.67.163/fenci/myword.txt
        
        

 修改

/usr/local/nginx/conf
中的nginx.conf

按照路径利用nginx发布静态资源
在nginx.conf中配置
  server {
        listen  80;
        server_name  192.168.232.128;
        location /fenci/ {
           root es;
    }
   }

并且在/usr/local/nginx/下建/es/fenci/目录,目录下加myword.txt

myword.txt中编写关键词,每一行代表一个词。

elasticsearch实现中文分词+远程自定义词库(nginx)_第2张图片访问成功

 

自定义分词成功

elasticsearch实现中文分词+远程自定义词库(nginx)_第3张图片

你可能感兴趣的:(ElasticSearch)