Elasticsearch的“more_like_this”查询允许用户根据搜索文档ID查找类似的文档。
我有一个查询来查找与特定字段(即title,brand,category_name)上的搜索文档类似的文档。
es.search(index=INDEX_NAME, body = {'query': {
"more_like_this" : {
"fields" : ['title', 'brand', 'category_name'],
"like" : [
{
"_index" : INDEX_NAME,
"_type" : TYPE_NAME,
"_id" : "8117769"
}
],
"min_term_freq" : 2,
"max_query_terms" : 25
}
}
})
我的印象是,它会将搜索到的文档的标题字段与其他文档标题字段,品牌与品牌以及类别名称与类别相匹配。然而,结果似乎表明不然。相反,它似乎结合了搜索文档标题,品牌和类别字段中的文本,然后从中搜索。
有没有办法限制更像此查询以匹配字段与字段,而不是组合字段和匹配所有字段?
通过以下方式进一步了解此行为:Elasticsearch "More Like This" API vs. more_like_this query
更像这个api更进一步,允许提供文档的id,再次提供字段列表。这些字段的内容将从该特定文档中提取,并用于在相同字段上进行更类似的查询。这意味着生成的更像此查询将具有包含先前提取的文本的属性文本,并将在相同的字段上执行。正如你所看到的那样,api执行的更像是这个问题。