es7.x(7)—短语搜索(match_phrase)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es7.x(7)—短语搜索(match_phrase)相关的知识,希望对你有一定的参考价值。

参考技术A

phrase: [freɪz] 短语

ES7.x官方文档—匹配词组搜索

match_phrase搜索的数据类型为 text 类型,会将查询条件进行分词,但要求待匹配的文档需要同时包含分词后的数据。

流程:

query条件会进行分词,得到 go 和 redis 两个条件。去寻找同时包含这两个条件的文档。

如下图2.2-1所示,doc文档中不存在同时存在 go 和 redis 两个词语的name字段,故未找到。

match_phrase的分词结果必须在被检索字段的分词中都包含时,match_phrase分词结果也会计算在doc中的顺序。match_phrase的分词的doc中越靠近,则评分越高。

当然可以通过slop参数来控制 短语 的偏移量:

短语 搜索到的doc文档,不必顺序相同,只要slop足够,依旧可以搜索出来。

相当参数:

es 基于match_phrase/fuzzy的模糊匹配原理及使用

ElasticSearch系列——使用rescoring机制优化近似匹配搜索的性能

聚类搜索短语

【中文标题】聚类搜索短语【英文标题】:Clustering search phrases 【发布时间】:2012-10-29 08:18:12 【问题描述】:

我正在解决这个问题,我需要根据他们正在寻找的内容对搜索词组进行聚类(现在,我们假设他们只在寻找地方,例如书店、超市等)

“我在哪里可以找到芝士蛋糕?” 可以概率地聚集到“甜点”、“餐厅”……

“我在哪里可以买到杂货?” 可以概率性地聚集到“超市”、“蔬菜”……

假设一开始,一组搜索短语可以归类到的内容已经存在。

我研究了主题建模,但我觉得我可能走错了方向。关于如何开始/研究什么的任何建议都会非常有帮助。

非常感谢。

【问题讨论】:

这看起来像query rewriting。 slideshare.net/lundjohnson/2011-07-27-bay-area-search 你有什么样的数据可用? 【参考方案1】:

主题建模当然提供了一种可能的解决方案。从大型语料库中归纳出一个主题模型,尽可能代表您正在索引和搜索的文本。然后将每个查询表示为给定查询的主题的后验。如果您想获得查询集群,则可以在这个缩减集上执行此操作,或者如果您正在执行 IR,您可以使用结果向量而不是原始词袋。

如果这不是您想要的,您能详细说明问题吗?您希望如何处理集群查询?

【讨论】:

以上是关于es7.x(7)—短语搜索(match_phrase)的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch - Java API 操作 ES7.16.0+ES8.x 索引,文档;高级搜索

es7.x—查询篇

Es7.x使用RestHighLevelClient进行查询操作

ELK学习002:Elasticsearch 7.x 的安装及配置

快速全文搜索在 MySQL 中按 id 排序的精确短语的一次出现

干货 | Elasticsearch 向量搜索的工程化实战