任何人都可以在solr中解释Query Elevation和Boost Query之间的区别。我找不到什么是缺点,这两种促进机制的优点是什么。 非常感谢你。
答案 0 :(得分:4)
提升查询
提升查询会影响计算的分数 - 未获得大分数的文档可能会得到提升,但与其他项目相比,这种提升可能仍然不足以抵消低分。即提升查询将增加文档的分数 - 尝试根据特定条件使其更具相关性。它可能不会(并且您可能不希望它)成为最佳结果,即使应用了提升。
例如,如果您想要为标签IMPORTANT
提供更高权重的任何文档,您可以为其应用提升查询 - bq=label:IMPORTANT
。
但是,如果您在主题字段中搜索“完美的电子邮件”,并且您有一封实际上是主题的电子邮件,并且您有另一封电子邮件,其中只有“电子邮件”作为其主题的一部分 - 但它被标记为重要,其他电子邮件被标记为重要的事实可能不是一个足够的理由在完全匹配主题的电子邮件之前显示它。您必须调整用于提升的值(即label:IMPORTANT^<weight>
),以获得最适合您的确切用例的结果。
查询提升
查询提升是一种说法“如果有人搜索此文档,则此文档应位于顶部”(或者根本不应包含此文档)。即这些是基于预定规则集的搜索结果的手动调整。 example from the manual是一个足够好的插图,如果有人搜索MA147LL/A
,则文档ipod
已决定显示在顶部。
正如你所看到的 - “已经确定处于最顶端”与“以某种方式影响得分”不同 - 它只是硬编码在顶部。如果你搜索这个,你应该在顶部看到这个。或者您可以应用exclude
属性,该属性将从返回的文档集中删除文档(即,您确定在搜索ipod
时绝不想要查看特定文档 - 但仅限于某人搜索那个)。
查询结果组件通常通过旧的搜索引擎过去如何将“赞助结果”显示在常规搜索结果的顶部来说明,其中搜索结果中的某些文档仅显示在其他任何内容之前。
这有时被称为“赞助搜索”,“编辑提升”或“最佳投注”。此组件将用户查询文本与配置的顶级结果映射相匹配。文本可以是任何字符串或非字符串ID,只要它被索引。虽然此组件可以与任何QueryParser一起使用,但最适合与DisMax或eDisMax一起使用。