繁体   English   中英

如果在特定字段中找到查询,则干草堆/ Solr提升结果

[英]Haystack/Solr boosting results if the query is found in a specific field

我们遇到的问题是,将不相关的结果返回为搜索中的最高结果,我们正在努力改善这种行为,但不确定如何做到。

我们的SearchIndex包含大约十二个字段。 document = True字段是模板支持的字段,我们已将大部分内容放入其中。 即使它仍然有用,但在其中找到的某些东西与其他东西的相关性要低得多。

举一个具体的例子:如果用户搜索“红玫瑰”,我们希望返回红玫瑰作为最高结果...如果较低的结果只是玫瑰或只是红色,甚至被描述为“玫瑰红”,则效果更好“ 彩色。

问题是我们的document = True字段中有大量被描述为“玫瑰红色”的项目。 更糟糕的是,实际的红色玫瑰没有“红色”和“玫瑰”彼此特别接近,因为这些值来自不同的字段。 结果,我们得到了完全不相关的前几百个结果。

我们想做的是:

答:搜索主文档,然后搜索我们每个其他字段,并相应地增强(但不是硬过滤器)。 如果术语“玫瑰”出现在项目名称之一中,而“红色”作为其属性值之一出现,则该结果应具有较高的得分。 这为我们提供了在理论上按相关性排序的最佳结果。

B.一次搜索所有字段,如果值是任何“增强”字段,则将其提升。

似乎应该使用字段增强来解决问题,但由于基于字段的过滤是一个严酷的排除,我们希望弄清楚如何表达它,我们希望它仅影响相关性评分。

两者的结果实际上是相同的。 我们只是无法弄清楚如何使用Haystack来执行其中任何一个。 或者,如果我们不得不退回到原始查询,该如何编写一个solr查询来完成此任务。

我可以给你一些指示,因为我没有确切的用例:-

您可以检查Solr edismax查询解析器以配置:-

  1. 您要搜索的字段-主要用于选择结果
  2. 可变提升字段的相关性-确定字段的重要性
  3. 不同单词组合的可变提升,例如单个单词,短语匹配,带斜率的带状疱疹匹配,以确定相关性
  4. 在其他领域提供额外的推动

这将帮助您过滤结果并根据字段和单词组合匹配项对结果进行相应排序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM