首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过elasticsearch搜索字符串关键字

通过elasticsearch搜索字符串关键字
EN

Stack Overflow用户
提问于 2021-11-11 09:59:55
回答 1查看 73关注 0票数 1

我有一个问题要用查询“节能电视”来实现elasticsearch。我有3个带有"title“字段的对象:

T1:带有LG应用程序的手机是一款节能电视

T2:电视节能 LG应用制造

T3:带有LG应用程序的手机确保最佳节能

然后,我使用"match“和" and ”操作符查询“节能电视”:

代码语言:javascript
复制
GET my_index/_search
{
    "query": {
        "match": {
            "title": {
                "query": "energy saving tv",
                "operator": "and"
            }
        }
    }
}

结果:

  • 得分T1: 5.0
  • T2评分: 5.37

所以T2的分数比T1的分数要高,但是我想要有“节能*电视”形式的标题(按关键字中单词的顺序排列)会有更高的分数。请帮帮我。非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2021-11-12 01:33:14

您可以使用匹配短语查询来匹配由多个单词组成的短语。

代码语言:javascript
复制
{
  "query": {
    "match_phrase": {
      "title": "energy saving tv"
    }
  }
}

请注意,这将只与T1匹配,因为保留了确切的顺序。

如果您还希望包含其他结果,并将其与更多的混合或分散的词序分开,则可以添加slop参数。

这也将与T2相匹配,但得分较低:

代码语言:javascript
复制
{
  "query": {
    "match_phrase": {
      "title": {
        "query": "energy saving tv",
        "slop": 10
      }
    }
  }
}

slop基本上定义了查询项向右或向左移动的频率上限,以便与文档匹配。它默认为0

例如,从查询"energy saving tv"到文档"energy tv saving"需要一个slop of 2,因为tv向左移动一个术语,saving向右移动一个术语。

请参阅这个答案获得一个很好的视觉解释。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69926360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档