本文介绍如何在elk search实现相似搜索的思路
目前elasticsearch有两种方案:
dense-vector在elk 7.3版本开始支持,需要x-pack模块,且需要在索引的时候就处理并生成dense-vector,相对比较麻烦
More Like This Query是一个查询语法,在任意版本均可用,无需x-pack,且无需改动已经index的内容,语法如下
GET /_search
{
"query": {
"more_like_this" : {
"fields" : ["title", "description"],
"like" : "Once upon a time",
"min_term_freq" : 1,
"max_query_terms" : 12
}
}
}
另外,它还可以以某几篇具体的文章为标准来查询相似内容
GET /_search
{
"query": {
"more_like_this" : {
"fields" : ["title", "description"],
"like" : [
{
"_index" : "imdb",
"_id" : "1"
},
{
"_index" : "imdb",
"_id" : "2"
},
"and potentially some more text here as well"
],
"min_term_freq" : 1,
"max_query_terms" : 12
}
}
}
MLT查询从输入文档中提取文本,通常使用该字段中的同一分析器对其进行分析,然后选择tf-idf最高的前K个词构成这些词的析取查询。
原文:https://www.cnblogs.com/windchen/p/12459553.html