Elasticsearch有两个类似的功能,以实现“类似”的文件:Elasticsearch“更多类似这样的” API与more_like_this查询
还有就是"More Like This API"。它给了我类似于给定的文件。尽管如此,我不能在更复杂的表达式中使用它。
还有"more_like_this"
query for use in the Search API我可以在bool或boosting表达式中使用它,但是我不能给它一个文档的id。我必须提供"like_text"
参数。
我有包含标签和内容的文档。有些文件会有很好的标签,有些则不会有。我想要一个每次都能工作的“类似文档”功能,但是会将具有匹配标签的文档进行排名高于具有匹配文本的文档。我的想法是:
{
"boosting" : {
"positive" : {
"more_like_this" : {
"fields" : ["tag"],
"id" : "23452",
"min_term_freq" : 1
}
},
"negative" : {
"more_like_this" : {
"fields" : ["tag"],
"id" : "23452",
}
},
"negative_boost" : 0.2
}
}
显然,这并不工作,因为在"more_like_this"
没有"id"
。有什么选择?
感谢您的回答。因此,唯一替代不存在的“id”JSON名称是获取全文并将其放置在“like_text”中。没有办法避免全文的往返。也没有办法减少它。例如。没有办法访问文档的vector这个术语,只能得到25个“顶级术语”,这样我就可以直接将它们放在''like_text''中,并获得与全文相同的结果。请确认。我正在考虑编写一个elasticsearch插件,它会给我一个文档的最佳条件。你认为这会起作用吗? – 2013-03-11 09:21:37
据我所知,没有现成的方式来实现你想要的。你可以编写一个插件,公开一个类似于这个查询的新类型,它接受文档的id作为输入,并从中获取文本,甚至可以使用术语向量。 – javanna 2013-03-11 09:48:41