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

时间:2013-02-15 18:36:10

标签: solr django-haystack

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

我们有大约十几个字段的SearchIndex。 document = True字段是模板支持字段,我们已将大部分内容放入其中。在那里发现的一些东西与其他东西相比要少得多,即使它仍然有用。

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

问题是我们的文件=真实字段有大量项目被描述为“玫瑰红”。更糟糕的是,实际的红玫瑰没有“红色”和“玫瑰色”,因为这些价值来自不同的领域。因此,我们得到的前几百个结果完全不相关。

我们想要做的是:

一个。搜索主文档,然后搜索我们的其他每个字段并相应地提升(但不是硬过滤器)。如果其中一个项目名称中出现“rose”一词,而“red”出现为其中一个属性值,则该结果应该具有更高的分数。这给我们理论上的最佳结果按相关性排序。

B中。一次搜索所有字段,如果该值是任何“提升”字段,则提升。

似乎使用字段提升应该是答案,但我们无法弄清楚如何表达它,因为基于字段的过滤是一种严格的排除,我们希望它只影响相关性评分。

这两者的结果实际上是相同的。我们无法弄清楚如何用Haystack做他们中的任何一个。或者,如果我们必须回退到原始查询,那么如何编写完成此操作的solr查询。

1 个答案:

答案 0 :(得分:1)

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

您可以查看Solr edismax query parser进行配置: -

  1. 您要搜索的字段 - 主要是选择结果
  2. 相关性字段的变量提升 - 确定字段的重要性
  3. 不同单词组合的可变增强,例如单词,短语匹配,瓦片与slop匹配以确定相关性
  4. 为其他字段提供额外提升
  5. 这将帮助您过滤结果并根据字段和单词组合匹配

    进行相应的排序