我是ElasticSearch的新手。在ElasticSearch中,我们几乎可以在所有查询中使用术语Boost。我知道它是用来修改单据分数的。但我找不到它的实际用途。我的问题是,如果我在一些查询中使用Boost值,它是否会影响搜索的最终分数或文档在索引本身中的Boost排名。
Boost at index和Boost at Query的主要区别是什么?
提前谢谢..!
qojgxg4l1#
Query Time Boost允许您为一个查询赋予比另一个查询更大的权重。例如,假设您正在查询“Quick Brown Fox”的title和body字段,您可以将其编写为:
title
body
{ "query": { "bool": { "should": [ { "match": { "title": "Quick Brown Fox" } }, { "match": { "body": "Quick Brown Fox" } } ] } } }
但您决定希望title字段比body字段更重要,这意味着您需要将title字段上的查询boost(例如)2:
boost
{ "query": { "bool": { "should": [ { "match": { "title": { "query": "Quick Brown Fox", "boost": 2 } } }, { "match": { "body": "Quick Brown Fox" } } ] } } }
(请注意match子句的结构如何更改以适应boost参数)。
match
2的boost值并不是_score的两倍--分数会经过标准化过程。因此,您应该将boost视为使此查询子句相对比其他查询子句更重要。我怀疑我是否在某些查询中使用了Boost值。会不会影响搜索的最终得分
2
_score
是的,但无论如何都不应该依赖_score的实际值。它的唯一目的是允许Elasticearch决定哪些文档与此查询最相关**。如果查询更改,分数也会更改。
Re索引时间提升:不要使用它。它不灵活,而且容易出错。
deikduxw2#
在查询时增强不会修改您的索引。它只在搜索时对字段应用Boost因子。
我更喜欢在查询时使用Boost,因为它更灵活。如果您需要更改Boost规则,并且已在索引时设置了它,则可能需要重新编制索引。
bzzcjhmw3#
提升的用例:假设您正在构建一个电子商务Web应用程序,您的产品数据在ElasticSearch中。每当客户使用搜索栏时,您都可以查询ElasticSearch,并在Web应用程序中显示结果。Elastic Search保留每个文档的相关性分数,并按相关性分数的排序顺序返回结果。现在假设用户搜索“Samsung Phones”,那么您的Web应用程序是否应该只显示Samsung Phones->答案是否定的。你的Web应用程序也应该显示其他手机(因为用户可能也喜欢这些手机),但首先显示三星手机(因为他/她正在寻找那些手机),然后再显示其他手机。
所以问题是,你如何查询三星手机在搜索结果中的排名?->答案是相关性分数。假设你点击了所有手机和三星手机的查询点赞,并保持三星手机的高相关性分数,那么结果将首先包含三星手机,然后是其他手机。
3条答案
按热度按时间qojgxg4l1#
Query Time Boost允许您为一个查询赋予比另一个查询更大的权重。例如,假设您正在查询“Quick Brown Fox”的
title
和body
字段,您可以将其编写为:但您决定希望
title
字段比body
字段更重要,这意味着您需要将title
字段上的查询boost
(例如)2:(请注意
match
子句的结构如何更改以适应boost
参数)。2
的boost
值并不是_score
的两倍--分数会经过标准化过程。因此,您应该将boost
视为使此查询子句相对比其他查询子句更重要。我怀疑我是否在某些查询中使用了Boost值。会不会影响搜索的最终得分
是的,但无论如何都不应该依赖
_score
的实际值。它的唯一目的是允许Elasticearch决定哪些文档与此查询最相关**。如果查询更改,分数也会更改。Re索引时间提升:不要使用它。它不灵活,而且容易出错。
deikduxw2#
在查询时增强不会修改您的索引。它只在搜索时对字段应用Boost因子。
我更喜欢在查询时使用Boost,因为它更灵活。如果您需要更改Boost规则,并且已在索引时设置了它,则可能需要重新编制索引。
bzzcjhmw3#
提升的用例:假设您正在构建一个电子商务Web应用程序,您的产品数据在ElasticSearch中。每当客户使用搜索栏时,您都可以查询ElasticSearch,并在Web应用程序中显示结果。Elastic Search保留每个文档的相关性分数,并按相关性分数的排序顺序返回结果。现在假设用户搜索“Samsung Phones”,那么您的Web应用程序是否应该只显示Samsung Phones->答案是否定的。你的Web应用程序也应该显示其他手机(因为用户可能也喜欢这些手机),但首先显示三星手机(因为他/她正在寻找那些手机),然后再显示其他手机。
所以问题是,你如何查询三星手机在搜索结果中的排名?->答案是相关性分数。假设你点击了所有手机和三星手机的查询点赞,并保持三星手机的高相关性分数,那么结果将首先包含三星手机,然后是其他手机。