【发布时间】:2016-12-24 23:41:43
【问题描述】:
我正在抓取几个网站并重新列出他们的产品,每个网站在 Elasticsearch 中都有自己的索引。有些网站有联属网络营销计划,我想在我的搜索结果中首先列出这些。
有没有办法让我“提升”某个索引的结果?
我是否应该在抓取时将字段 hasAffiliate: true 写入 ES,然后 boosting the query clauses 具有该值?还是有更好的办法?
【问题讨论】:
标签: elasticsearch
我正在抓取几个网站并重新列出他们的产品,每个网站在 Elasticsearch 中都有自己的索引。有些网站有联属网络营销计划,我想在我的搜索结果中首先列出这些。
有没有办法让我“提升”某个索引的结果?
我是否应该在抓取时将字段 hasAffiliate: true 写入 ES,然后 boosting the query clauses 具有该值?还是有更好的办法?
【问题讨论】:
标签: elasticsearch
使用boost 可能难以保证它们首先出现在搜索中。根据官方指南:
实际上,没有简单的公式来决定“正确” 提升特定查询子句的值。这是一个问题 试一试。请记住,提升只是因素之一 参与相关性得分
https://www.elastic.co/guide/en/elasticsearch/guide/current/query-time-boosting.html
这取决于您正在执行的查询类型,但在这里您还有其他几个选项:
带有权重的score function:可能是更可预测的选择。
只需使用sort by hasAffiliate(最简单的一个)。
注意:不确定是否可以按布尔字段排序,在这种情况下,您可以将 hasAffiliate 映射设置为整数 byte(最小的一个),当为 true 时将其设置为 1。
【讨论】: