首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对应于第一个搜索项的弹性搜索boost查询

对应于第一个搜索项的弹性搜索boost查询
EN

Stack Overflow用户
提问于 2014-03-18 10:18:01
回答 3查看 969关注 0票数 0

我正在使用PyElasticsearch (elasticsearch客户端库)。我正在搜索像Arvind,今天的印度经济时报,这样的字符串,这给了我合理的结果。我希望能在搜索查询中更多地增加第一个单词的权重。我怎么能这么做?

代码语言:javascript
复制
res = es.search(index="article-index", fields="url", body={
  "query": {
    "query_string": {
      "query": "keywordstr",
      "fields": [
        "text",
        "title",
        "tags",
        "domain"
      ]
    }
  }
})

我现在正在使用上面的命令进行搜索。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-18 17:42:44

Lucene查询语法完成了这一任务。谢谢

4/queryparsersyntax.html#Boosting%20a%20Term

票数 0
EN

Stack Overflow用户

发布于 2014-03-18 15:42:41

将给定的查询拆分为多个术语。在你的例子中是Arvind,Kejriwal.现在,表单查询字符串查询(或字段查询或符合需要的任何其他查询)对每个给定的术语。查询字符串查询将类似于以下http://www.elasticsearch.org/guide/en/elasticsearch/reference/0.90/query-dsl-query-string-query.html

代码语言:javascript
复制
{
    "query_string" : {
        "default_field" : "content",
        "query" : "<one of the given term>",
        "boost": <any number>
    }
}

现在,您已经获得了多个查询,如上面所示,具有不同的boost值(取决于哪一个具有更高的权重)。使用BOOL查询将所有这些查询合并为一个查询。http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html如果您希望所有的术语都出现在结果中,查询将如下所示。

代码语言:javascript
复制
{
    "bool" : {
        "must" :  [q1, q2, q3 ...]
    }
}

您可以使用不同的bool查询选项。例如,您希望在结果中显示三个术语中的任何一个,然后查询将类似于

代码语言:javascript
复制
{
    "bool" : {
        "should" :  [q1, q2,q3 ...]
    },
    "minimum_should_match" : 3,
}
票数 2
EN

Stack Overflow用户

发布于 2014-03-18 12:53:22

理论上:

  1. 使用api拆分成术语
  2. 不同助推条件下的质疑
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22476315

复制
相关文章

相似问题

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