我可以知道“更像这样”查询的选定术语吗

Vin*_*mel 2 elasticsearch morelikethis

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

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

我知道这组术语是先验地选择参考文档与索引的比较,以构建一个独特的“匹配”查询但是......

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

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

小智 5

您必须validate结合使用explain才能了解弹性选择了哪些术语。

GET /imdb/movies/_validate/query?explain=true
{
  "query": {
    "more_like_this": {
      "like": {
        "_id": "88247"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

回复:

{
   ...
   "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)"
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅此讨论和此拉取请求

  • 这些链接真的很有帮助。谢谢!我发现我必须使用重写参数而不是解释参数来获取解释中的关键字。 (2认同)