【发布时间】:2018-11-22 19:33:03
【问题描述】:
我正在尝试让名称字段在 Elasticsearch 中合理工作,但无法找到指导。请帮助我,互联网!
我的文档有多个作者,因此有一个多值名称字段。假设我要搜索 paul f tompkins,以及两个文档:{"authors": ["Paul Tompkins", "Dietrich Kohl"]} 和 {"authors": ["Paul Wang", "Darlene Tompkins"]}。
我的搜索将很容易地检索到这两个文档,但两者在authors 查询中的得分相同。我希望我在 authors 数组的同一项目中匹配多个术语以提高第一个文档的分数。
我该怎么做?我所知道的提高邻近度的两种技术是带状疱疹(我相信这会生成 paul_f 和 f_tompkins 带状疱疹,两者都不匹配)和带有 slop 的短语查询(由于 f 令牌而失败不存在)。
理想情况下,我想要一个类似于带有minimum_should_match 的短语 slop 查询:我给它四个单词,如果在同一个数组元素中至少存在两个单词,它匹配,并且在同一个数组元素中增加每个额外的匹配项分数。我不知道该怎么做。
(如果客户端逻辑试图从查询中去除f 对我来说是行不通的——这是一个简化的示例,但假设我也希望能够处理类似的查询paul francis tompkins 或 paul f tompkins there will be blood.)
【问题讨论】:
标签: elasticsearch search full-text-search