ElasticSearch 全文搜索匹配中文短语
这里针对的是已分词字段的全文搜索,不是针对未分词字段的 term 搜索。
全文搜索时要实现匹配,需要用到 match_phrase 语句。
建索引时必须分词,分词操作会把一个字符串拆分成一系列 token,每个 token 有三个位置参数:start_offset,end_offset,position。
中文分词常用的一个插件叫 ik,但使用 ik 分词后,match_phrase 查询会出现问题 (参考:类似#195的match_phrase问题 · Issue #204 · medcl/elasticsearch-analysis-ik,注意 ik 的作者 @medcl 在 2017 年 1 月 5 号的回答),举例如下:
假设我们用 ik_max_word 索引了两个文档,内容分别为:
{
"title": "公开发行"
}
{
"title": "公开发行股票"
}
相关文章