在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

pinyin分词 match和match_phrase的问题?

Elasticsearch | 作者 kepmoving | 发布于2017年01月23日 | 阅读数:4153

添加pinyin分词后,用match搜索相应的拼音是可以搜到,但是使用match_phrase缺搜不到???
QQ图片20170123162024.png QQ图片20170123162004.png
已邀请:

medcl - 今晚打老虎。

赞同来自: kepmoving

phrase需要考虑 analyzer 的行为,索引的分词和查询的分词对不上也不行的,如果要用 phrase,需要把 pinyin 的原文和首字母拼接的参数禁用掉,term及位置不要重叠,即:
PUT /medcl/
{
"index" : {
"analysis" : {
"analyzer" : {
"pinyin_analyzer" : {
"tokenizer" : "my_pinyin"
}
},
"tokenizer" : {
"my_pinyin" : {
"type" : "pinyin",
"keep_separate_first_letter" : false,
"keep_full_pinyin" : true,
"keep_first_letter":false,
"keep_original" : false
}
}
}
}
}

kennywu76 - Wood

赞同来自:

match_phrase要求查询语句与匹配的文档之间,分出来的词的相对位置要一致。  你可以用analyz api对查询语句和实例文档做一下分析,看看分出来的toker和他们的position是怎样的。

要回复问题请先登录注册