前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >elasticsearch 分词

elasticsearch 分词

作者头像
崔哥
发布2022-05-25 20:45:33
3160
发布2022-05-25 20:45:33
举报
文章被收录于专栏:崔哥的专栏

安装中文、拼音分词

代码语言:javascript
复制
https://github.com/medcl/elasticsearch-analysis-ik
https://github.com/medcl/elasticsearch-analysis-pinyin

下载和elasticsearch对应的版本,解压后移到plugins目录

代码语言:javascript
复制
root@57d58faf9b1e:/usr/share/elasticsearch/plugins# ls
ik  pinyin

重启elasticsearch使生效

测试一下

代码语言:javascript
复制
默认分词
curl -H "Content-Type: application/json" -XPOST 'localhost:9200/_analyze?pretty' -d'
{
  "analyzer": "standard",
  "text":"22强烈推荐11"
}'

ik中文分词
curl -H "Content-Type: application/json" -XPOST 'localhost:9200/_analyze?pretty' -d'
{
  "analyzer": "ik_max_word",
  "text":"22强烈推荐11"
}'

拼音分词
curl -H "Content-Type: application/json" -XPOST 'localhost:9200/_analyze?pretty' -d'
{
  "analyzer": "pinyin",
  "text":"22强烈推荐11"
}'

创建索引article,内容如下

代码语言:javascript
复制
{
  "settings": {
    "index":{
      "number_of_shards": "1",
      "number_of_replicas": "0",
      "analysis" : {
        "analyzer" : {
          "default" : {
            "tokenizer" : "ik_max_word"
          },
          "pinyin_analyzer" : {
            "tokenizer" : "my_pinyin"
          }
        },
        "tokenizer" : {
          "my_pinyin" : {
            "keep_separate_first_letter" : "false",
            "lowercase" : "true",
            "type" : "pinyin",
            "limit_first_letter_length" : "16",
            "keep_original" : "true",
            "keep_full_pinyin" : "true"
          }
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer":"ik_max_word",
        "fields" : {
          "pinyin" : {
            "type" : "text",
            "term_vector" : "with_positions_offsets",
            "analyzer" : "pinyin_analyzer",
            "boost" : 10.0
          }
        }
      },
      "content": {
        "type": "text",
        "analyzer":"ik_max_word"
      },
      "create_time": {
        "type": "long"
      },
      "id": {
        "type": "long"
      },
      "update_time": {
        "type": "long"
      }
    }
  }
}

php

导入数据后,就可以测试了

代码语言:javascript
复制
    public function search($keyword, $page=1, $max=10) {
        $params = [
            'index' => 'article',
            'body' => [
                'query' => ['multi_match' => ['query' => $keyword, 'fields'=>['title', 'title.pinyin', 'content']]],
                '_source'=>['id', 'title', 'content', 'create_time'],
                'highlight'=>['fields'=>['title'=>new \stdClass(), 'content'=>new \stdClass()]],

                "sort"=>['_doc'],
                'from'=>($page-1)*$max,//from, size相当于sql的limit
                'size'=>$max,
            ]
        ];
        return $this->cache()->search($params);
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档