本文介绍了 elasticsearch实现精确匹配效果,完全匹配结果实现,elasticsearch phrase短语查询
搜索精确匹配场景
我们查文档常使用顺序匹配。我们需要在文档中顺序扫描,找到完全匹配的子句。
有的情况精确匹配比搜索引擎的查找有优势,比如这样的内容”chinese:1388838245“,如果用户输入”883“希望搜到这则内容,在常规的情况下是搜不到的。
这是因为在有了搜索引擎后,我们对查询语句做的处理就不一样了。我们通常会先分词,然后查找对应的词条索引,最后得到评分由高到低的文档列表。上面的例句在常规的分词情况下,没有也不可能有”883“这个词条,因此搜索不到这则内容。
利用elasticsearch默认的分词方式 standard实现
standard分词可以对中文按单字进行切分,从而实现 文本全匹配,搜索的时候使用 AND 逻辑关系 就可以实现全匹配效果
比如:
金属盖板_DN15
分词结果:
["金","属","盖","板","DN15"]
问题:这种方式可以实现精确匹配,但也存在一定问题就是匹配词是无顺序的,想要实现顺序查询需要借助 phrase短语查询。
elasticsearch phrase短语查询
match_phrase来实现完全匹配查询
解释:phrase查询原始的作用是用来做短语查询, 它有一个重要的特点:有顺序。我们利用了它匹配的有序性,限制slop为0,则可实现完全匹配查询。
备注:本文原创地址:https://www.catroom.com.cn/article/515 ,转载请注明出处
发表评论
取消回复