【问题标题】:Boosting in more like this elasticsearch像这样的弹性搜索增强
【发布时间】:2017-06-27 05:27:50
【问题描述】:

我试图使用elasticsearch的http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html#query-dsl-mlt-query为相关项目做一个简单的POC,

但我不知道如何使用提升,以便我的文档中的重要字段在最终输出中具有更大的权重。另外,我怎样才能在更像这个查询中应用提升,以便最近的文档具有更大的权重。

谢谢。

【问题讨论】:

  • @Kumar:感谢您的回答。我专门寻找弹性搜索。在 SOLR 中,我认为这是可以做到的。

标签: elasticsearch morelikethis


【解决方案1】:

如果文档更像特定文档或者匹配在特定字段上,则可以使用多个 mlt 查询并将它们包装在 should 子句(bool)/dis_max 中,以实现特定提升的一种方法 根据您在评分时是否需要“总和”/“最大”逻辑:

使用 dis_max 的示例是:

POST  test_index/_search?explain=true
{
    "fields": [
       "field1",
       "field2"
    ], 
    "query": { 
        "dis_max": {
           "queries": [
               {
                "more_like_this" : {
                    "fields" : ["field1"],
                    "like_text" : "this is  some text",
                    "min_term_freq" : 1,
                    "max_query_terms" : 2,
                    "boost": 20
                }
               },
               {
                "more_like_this" : {
                    "fields" : ["field2"],
                    "like_text" : "this is some other text",
                    "min_term_freq" : 1,
                    "max_query_terms" : 2,
                    "boost": 20
                }
               }
            ]
        }
    }
}

【讨论】:

  • 这个解决方案看起来很棒。让我试试这个并回复。感谢您的回答。
  • 使用平局刹车,以便所有字段得分都包含在最终得分中
  • @keety 你能更好地描述你的解决方案吗?我真的很感兴趣,但也阅读了文档,我对“基于评分时是否想要“最大值”或“逻辑总和”的含义表示怀疑。你能解释一下这个概念吗?
  • 在上面的示例中,我使用了dis_max,它通过分配两个max 的两个more_like_this 子句的分数来对文档进行评分。如果您希望为文档分配一个分数,该分数是单个 more_like_this 子句分数的总和,您需要包含在 bool 查询中。请参阅此thread 以获取示例
猜你喜欢
  • 1970-01-01
  • 2014-12-01
  • 1970-01-01
  • 2016-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-22
  • 2021-11-23
相关资源
最近更新 更多