ElasticSearch案例

一、预期效果

在输入框输入关键词的时候,有自动补全功能(此处需要定义一个选择器),选择要输入的关键词,点击查询(点击查询以后,需要使用到另一个分词器对关键词进行分词),显示结果

注:
输入关键词的时候,使用分词器1
查询的时候,使用分词器2

二、设置

1、设置setting

PUT news
{
  "settings":{
    "analysis":{
      "analyzer":{
        #自定义分词器名称
        "tag_analyzer":{
          "type":"custom",
          "char_filter":["html_strip"],
          "tokenizer":"keyword",
          "filter":["pinyin_filter","completed_filter"]
        },
        #输入查询关键词时使用的分词器,
        "tag_search_analyzer":{
          "type":"custom",
          "char_filter":["html_strip"],
          "tokenizer":"keyword",
          "filter":["lowercase"]
        }
      },
      "filter":{
        "completed_filter":{
          "type":"edge_ngram",
          "min_gram":1,
          "max_gram":15
        },
        "pinyin_filter":{
          "type":"pinyin",
          "keep_first_letter":true,
          "keep_full_pinyin":false,
          "keep_joined_full_pinyin":true,
          "keep_none_chinese":true,
          "keep_none_chinese_together":true,
          "keep_none_chinese_in_first_letter":true,
          "keep_none_chinese_in_joined_full_pinyin":true,
          "none_chinese_pinyin_tokenize":false,
          "keep_original":true,
          "remove_duplicated_term":true
        }
      }
    }
  }
}

1.1检验分词器的效果

  • tag_search_analyzer分词器是对输入的查询关键词分词时使用
  • 预期效果:对于输入的关键词不进行拆分,而且大写英文转小写
GET news/_analyze
{
  "analyzer":"tag_search_analyzer",
  "text":"JAVA"
}

tag_search_analyzer分词结果:
在这里插入图片描述

  • tag_analyzer分词器是对存储的数据分词时使用。
GET news/_analyze
{
  "analyzer":"tag_analyzer",
  "text":"刘德华"
}

tag_analyzer分词器结果如下:

刘
刘德
刘德华
l
li
liu
liud
liude
liudeh
liudehu
liudehua
l
ld
ldh

注:

2、设置mapping

PUT news/_mapping
{
  "properties":{
    "tags":{
      #使用前缀推荐,所以type为completion
      "type":"completion",
      "analyzer":"tag_analyzer",
      #指定查询时使用到的分词器
      "search_analyzer":"tag_search_analyzer"
    }
  }
}

三、测试

插入数据

POST news/_bulk
{"index":{}}
{"tags":["刘德华","华语乐坛","黎明"]}

测试自动补全功能

GET news/_search
{
  "suggest":{
    "tag-suggest":{
      "prefix":"lim",
      "completion":{
        "field":"tags"
      }
    }
  }
}

结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值