【问题标题】:Can I know the selected terms of a "more like this" query我可以知道“更像这样”查询的选定术语吗
【发布时间】:2016-07-28 18:03:09
【问题描述】:

我正在尝试微调“更像这样”的查询,使其适用于非常相似的文档(正式公告,大部分文本是“模板”,因此只有某些段落是重要的)。

所以我想知道,给定一个选定的文档,对于我的“max_query_terms”:20,选择了哪些术语,使用解释查询仅显示哪些确实在检索到的文档中找到,而不是整个集合二十个令牌。

我知道一组术语是在将参考文档与索引进行比较之前先验选择的,以构建唯一的“匹配”查询,但是......当我浏览解释的命中时,我有超过 20 个标记......

例如,如果我使用 ngrams,max_query_terms 适用于分析文本的标记?或在分析之前使用术语,即取 20 个单词然后将我的过滤器(停用词、省略号、ngram 等)应用于此集合?

有没有办法通过rest或者api来检索mlt算法生成的匹配查询?

【问题讨论】:

    标签: elasticsearch morelikethis


    【解决方案1】:

    您必须结合使用validateexplain 才能了解elastic 选择了哪些术语。

    GET /imdb/movies/_validate/query?explain=true
    {
      "query": {
        "more_like_this": {
          "like": {
            "_id": "88247"
          }
        }
      }
    }
    

    回复:

    {
       ...
       "explanations": [
          {
             "index": "imdb",
             "valid": true,
             "explanation": "filtered((((title:terminator^3.71334 plot:kyle^1.0604408 plot:cyborg^1.0863208 ... )~2)) -ConstantScore(_uid:movies#88247))->cache(_type:movies)"
          }
       ]
    }
    

    请查看discussionpull request 了解更多详情。

    【讨论】:

    • 这些链接真的很有帮助。谢谢!我发现我必须使用重写参数而不是解释参数来获取解释中的关键字。
    • @Qaz 是对的,对于某些 MLT 查询,您需要确保 rewrite=true 并且如果您正在针对小型索引进行测试,您可能还需要将查询发送到所有分片。
    • 如果在 Kibana 中这样做,由于需要在查询之外包含参数,因此只能在开发者面板中完成,而不能发现。这个对吗? @西蒙
    • 添加&rewrite=true 以获取从"like_text" 中提取的“有趣的术语”。 (否则它只会返回"+like:[Here goes your text]"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2021-01-12
    相关资源
    最近更新 更多