elasticsearch 搜素实现精确匹配(完全匹配)

本文介绍了 elasticsearch实现精确匹配效果,完全匹配结果实现,elasticsearch phrase短语查询

搜索精确匹配场景

我们查文档常使用顺序匹配。我们需要在文档中顺序扫描,找到完全匹配的子句。

有的情况精确匹配比搜索引擎的查找有优势,比如这样的内容”chinese:1388838245“,如果用户输入”883“希望搜到这则内容,在常规的情况下是搜不到的。
这是因为在有了搜索引擎后,我们对查询语句做的处理就不一样了。我们通常会先分词,然后查找对应的词条索引,最后得到评分由高到低的文档列表。上面的例句在常规的分词情况下,没有也不可能有”883“这个词条,因此搜索不到这则内容。

利用elasticsearch默认的分词方式 standard实现

standard分词可以对中文按单字进行切分,从而实现 文本全匹配,搜索的时候使用 AND 逻辑关系 就可以实现全匹配效果

比如:

金属盖板_DN15

分词结果:
["金","属","盖","板","DN15"]

问题:这种方式可以实现精确匹配,但也存在一定问题就是匹配词是无顺序的,想要实现顺序查询需要借助 phrase短语查询。

elasticsearch phrase短语查询

match_phrase来实现完全匹配查询

query样例

解释:phrase查询原始的作用是用来做短语查询, 它有一个重要的特点:有顺序。我们利用了它匹配的有序性,限制slop为0,则可实现完全匹配查询。

备注:本文原创地址:https://www.catroom.com.cn/article/515 ,转载请注明出处

上一篇 下一篇


推荐文章

评论
说点什么吧?

发表评论

取消回复
  最新文章