一、介绍
// 测试分词器
GET _analyze
{
"analyzer": "ik_max_word",
"text": "北京欢迎你"
}
// 构建分词器映射
PUT my_index1
{
"mappings": {
"doc": {
"properties": {
"coontent": {
"type": "text",
"analyzer": "ik_max_word"
}
}
}
}
}
// 实例
PUT my_index1/doc/1
{
"content": "今天是个好日子"
}
PUT my_index1/doc/2
{
"今天不想活了"
}
GET my_index1/doc/1
{
"query": {
"match": {
"content": "今天"
}
}
}
二、分词器对比
// 构建默认分词器映射
PUT my_index2
{
"mappings": {
"doc": {
"properties": {
"coontent": {
"type": "text"
}
}
}
}
}
"""
注意:默认分词器是按照字进行一个一个分;ik分词器是按照词进行一个一个分
"""
三、粗细颗粒对比
// 构建新的分词器映射
PUT my_index3/doc/_mapping
{
"doc": {
"_all": {
"analyzer": "ik_smart"
},
"properties": {
"title": {
"type": "text"
},
"content": {
"type": "text"
}
}
}
}
"""
注意:smart分词器就会更加粗,如查询"今天",会相应地将没有"今天"的词语对应的数据也查询出来
"""
四、短语和短语前缀查询
// 短语查询
GET my_index3/doc/_search
{
"query": {
# 查询中文短语推荐
"match_parse": {
"content": "白话"
}
}
}
// 短语前缀查询
GET my_index3/doc/_search
{
"query": {
# 以"白话"开头进行查询
"match_parse_prefix": {
"content": "白话"
}
}
}