如何提升基于另一个领域的 Elasticsearch 结果?
How to boost Elasticsearch results based on another field?
有点简单的用例,但无法提出好的解决方案。
基本上我有两个索引字段:内容和关键字(关键字分词器),其中内容是一个长文本字段,关键字包含该内容中的重要术语。当我查询一些长文本时,我必须根据匹配文档中存在的关键字来提升这些结果。
我尝试在内容和关键字字段中查询完整文本,但速度太慢,或者对于超过 40 个单词的文本会抛出 too_many_clauses
错误。
{"query": {
"match": {
"keywords": {
"query": "some long text",
"analyzer": "custom_analyzer"
}
}
}}
有没有更好的办法?渗滤器在这里工作吗?
我可以把这个和我的应用联系起来,它类似于Whosebug,它由问题和答案组成,对于一个问题,有主题、正文、标签等。
此处的主题与您的关键字索引字段相关,正文与您的内容索引字段相关。通常主题包含有关post的重要关键字,您也是如此。
现在进入解决方案部分,
我们如何通过查询主题和正文索引字段来解决它,但将主题提高 15 倍,这是可配置的。
我们使用的ES查询:
{
"query": {
"multi_match" : {
"query" : "this is a test",
"fields" : [ "subject^15", "message" ]
}
}
}
This ES doc 也有一个类似的例子,他们将 multi_match 查询中的主题字段提高了 3 倍。
如果您有任何问题,请告诉我。
有点简单的用例,但无法提出好的解决方案。
基本上我有两个索引字段:内容和关键字(关键字分词器),其中内容是一个长文本字段,关键字包含该内容中的重要术语。当我查询一些长文本时,我必须根据匹配文档中存在的关键字来提升这些结果。
我尝试在内容和关键字字段中查询完整文本,但速度太慢,或者对于超过 40 个单词的文本会抛出 too_many_clauses
错误。
{"query": {
"match": {
"keywords": {
"query": "some long text",
"analyzer": "custom_analyzer"
}
}
}}
有没有更好的办法?渗滤器在这里工作吗?
我可以把这个和我的应用联系起来,它类似于Whosebug,它由问题和答案组成,对于一个问题,有主题、正文、标签等。
此处的主题与您的关键字索引字段相关,正文与您的内容索引字段相关。通常主题包含有关post的重要关键字,您也是如此。
现在进入解决方案部分, 我们如何通过查询主题和正文索引字段来解决它,但将主题提高 15 倍,这是可配置的。
我们使用的ES查询:
{
"query": {
"multi_match" : {
"query" : "this is a test",
"fields" : [ "subject^15", "message" ]
}
}
}
This ES doc 也有一个类似的例子,他们将 multi_match 查询中的主题字段提高了 3 倍。
如果您有任何问题,请告诉我。