首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提升个人文档

如何提升个人文档
EN

Stack Overflow用户
提问于 2017-06-26 11:35:26
回答 2查看 832关注 0票数 0

我有一个相当复杂的查询,现在我想增加一些满足某些条件的文档。我有以下简化的文档结构,我尝试给一些文档一个基于id,类型,标签的提升。

代码语言:javascript
复制
{
  "id": 123,
  "genres": ["ACTION", "DRAMA"],
  "tags": ["For kids", "Romantic", "Nature"]
}

我想做的就是举个例子

代码语言:javascript
复制
id: 123 boost: 5
genres: ACTION boost: 3
tags: Romantic boost: 0.2

并将包含在我的查询中并符合条件的所有文档推进,但我不想过滤掉它们。所以,我想,查询子句的增加没有任何帮助。

编辑:如果更容易理解我想要达到的目标(不确定是否可以使用elasticsearch,no也是一个有效的答案)。

我想使用查询进行搜索,并获得一个结果集。在这一组中,我想增加一些文档。但我不想扩大结果集或过滤它。提升应该独立于查询。

例如,我搜索一个特定的标记,并希望在结果集中提升所有带有类别“ACTION”的文档。但我不希望结果集中有类别'ACTION‘的所有文档,也不想只需要带有特定标记和类别'ACTION’的文档。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-06 09:33:36

我找到了一个解决办法,而且很简单。我用的是增强查询。我现在只是嵌套不同的提升标准和我原来的查询现在是基本的查询。

https://www.elastic.co/guide/en/elasticsearch/reference/2.3/query-dsl-boosting-query.html

例如:

代码语言:javascript
复制
{
  "query": {
    "boosting": {
      "positive": {
        "boosting": {
          "positive": {
            "match": {
              "director": "Spielberg"
            }
          },
          "negative": {
            "term": {
              "genres": "DRAMA"
            }
          },
          "negative_boost": 1.3
        }
      },
      "negative": {
        "term": {
          "tags": "Romantic"
        }
      },
      "negative_boost": 1.2
    }
  }
}
票数 0
EN

Stack Overflow用户

发布于 2017-06-27 07:32:43

我认为您需要在查询期间进行动态增强。

第一个匹配id标题与boost,第二个匹配‘性别’动作。

代码语言:javascript
复制
    {
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "title": {
              "query": "id",
              "boost": 5
            }
          }
        },
        {
          "match": { 
            "content": "Action"
          }
        }
      ]
    }
  }
}

如果希望基于查询进行multi_match匹配:

代码语言:javascript
复制
{
  "multi_match" : {
    "query": "some query terms here", 
    "fields": [ "id^5", "genders^3", "tags^0.2" ] 
  }
}

注:^5表示标题的升压。

编辑:可能是从ES参考指南中询问不同类型的multi_match查询(至少是ES5.x):

best_fields

(默认)查找与任何字段匹配的文档,但在最佳字段中使用_score。见best_fields。

most_fields

查找与任何字段匹配的文档,并从每个字段组合_score。见most_fields。

cross_fields

用同一个分析器处理字段,就好像它们是一个大字段一样。查找任何字段中的每个单词。见cross_fields。

短语

对每个字段运行match_phrase查询,并从每个字段组合_score。见短语和phrase_prefix。

phrase_prefix

对每个字段运行match_phrase_prefix查询,并从每个字段组合_score。见短语和phrase_prefix。

更多网址:ES 5.4 ElasticSearch参考

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

https://stackoverflow.com/questions/44758811

复制
相关文章

相似问题

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