Elasticsearch 的“more_like_this”查询允许用户根据搜索文档 ID 查找相似文档。
我有一个查询,要查找与特定字段(即标题、品牌、类别名称)上的搜索文档相似的文档。
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
}
}
})
Run Code Online (Sandbox Code Playgroud)
我的印象是,它将搜索文档的标题字段与其他文档标题字段、品牌与品牌、类别名称与类别相匹配。然而,结果似乎表明并非如此。相反,它似乎结合了搜索文档标题、品牌和类别字段中的文本,然后从中进行搜索。
有没有办法限制像这样的查询来匹配字段与字段,而不是组合字段并匹配所有字段?
对 more like this 行为的更多理解来自:Elasticsearch "More Like This" API vs. more_like_this query
更像这个 api 更进一步,允许提供文档的 id 以及字段列表。这些字段的内容将从该特定文档中提取,并用于对相同字段进行更像此的查询。这意味着生成的更像此查询的属性文本将包含先前提取的文本,并将在相同的字段上执行。正如您所看到的,more like this api 在后台执行更像此查询。