我可以知道“更喜欢这个”查询的所选术语

时间:2016-07-18 16:16:23

标签: elasticsearch morelikethis

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

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

我理解这组术语是先验地比较参考文档和索引,以构建一个独特的“匹配”查询但是......当我浏览解释命中时我有超过20个令牌......

例如,如果我使用ngrams,max_query_terms适用于分析文本的标记?或者在分析之前的条款,即用20个单词然后将我的过滤器(停用词,精读,ngrams等)应用到这个集合中?

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

1 个答案:

答案 0 :(得分:3)

您必须将validateexplain结合使用才能了解弹性选择的条件。

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)"
      }
   ]
}

有关详细信息,请参阅此discussion和此pull request