参数
{
"settings": {
"number_of_shards": "1",
"index.refresh_interval": "15s",
"index": {
"analysis": {
"analyzer": {
"ik_pinyin_analyzer": {
"type": "custom",
"tokenizer": "ik_smart",//ik_smart也试过
"filter": "pinyin_filter"
}
},
"filter": {
"pinyin_filter": {
"type": "pinyin",
"keep_first_letter": false
}
}
}
}
}
}
我的理解是 ik分词 然后将分词后的逐项结果通过filter交给拼音分词 雪花啤酒 ik会分成 雪花,啤酒 然后雪花交给pinyin会分词 xue,hua,xh 啤酒会分词 pi,jiu,pj
GET /${index}/${type}/${id}/_termvectors?fields=${fields_name}
我通过此方法查看数据分词结果 是分成 xue,hua,pi,jiu
我的需求是 雪花啤酒 搜索xh xhpj xh啤酒 雪花pj 都能搜出结果
1 个回复
rochy - rochy_he
赞同来自:
2. 你想查询到 xhpj 个人觉得即便 keep_first_letter 设置为 true 依旧无法满足需求;
因为分词器的结果为 雪花/啤酒 这是两个词语,所以借助 filter 无法生成 xhpj 这样的 token
所以你还得加上另外一个 Shingle Token Filter 可以将上述的词语进行一次组合,兴许可以组合成 xhpj 这样的 token;
或者你词典里面存在 雪花啤酒 也是可以的;
或者你直接对短语使用 pinyin analyzer 即可