我可以知道 "more like this" 查询的选定术语吗
Can I know the selected terms of a "more like this" query
我正在尝试微调 "more like this" 查询以使其适用于非常相似的文档(正式公告,大部分文本是 "template" 因此只有某些段落是重要的)。
所以我想知道,给定一个选定的文档,对于我的 "max_query_terms": 20,选择了哪些术语,使用解释查询仅显示在检索到的文档中确实找到了哪些,但没有整套二十个标记。
我知道术语集是先验选择的,将参考文档与索引进行比较,以构建一个独特的 "match" 查询但是......当我浏览解释命中时,我有超过 20 个标记.. .
例如,如果我使用 ngrams,max_query_terms 适用于分析文本的标记?或分析前的术语,即取 20 个词,然后将我的过滤器(停用词、省略词、ngram 等)应用到这个集合?
有没有办法通过 rest 或 api 检索 mlt 算法生成的匹配查询?
您必须结合使用 validate
和 explain
才能了解 elastic 选择了哪些术语。
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 and this pull request 了解更多详情。
我正在尝试微调 "more like this" 查询以使其适用于非常相似的文档(正式公告,大部分文本是 "template" 因此只有某些段落是重要的)。
所以我想知道,给定一个选定的文档,对于我的 "max_query_terms": 20,选择了哪些术语,使用解释查询仅显示在检索到的文档中确实找到了哪些,但没有整套二十个标记。
我知道术语集是先验选择的,将参考文档与索引进行比较,以构建一个独特的 "match" 查询但是......当我浏览解释命中时,我有超过 20 个标记.. .
例如,如果我使用 ngrams,max_query_terms 适用于分析文本的标记?或分析前的术语,即取 20 个词,然后将我的过滤器(停用词、省略词、ngram 等)应用到这个集合?
有没有办法通过 rest 或 api 检索 mlt 算法生成的匹配查询?
您必须结合使用 validate
和 explain
才能了解 elastic 选择了哪些术语。
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 and this pull request 了解更多详情。