2013-02-15 29 views
0

我们遇到与非相关的搜索结果的问题被返回在我们的搜索最高的搜索结果,我们正在努力改善这种行为,但真的不知道如何。草堆/ Solr的提升的结果,如果查询是在一个特定领域

我们SearchIndex有大约十几个领域。 document = True字段是我们将大部分内容放入的模板支持字段。其中的一些东西比其他东西的相关性要差得多,即使它仍然有用。

举一个具体的例子:如果“红玫瑰”进行搜索,我们要返回红玫瑰作为顶级的结果......如果更好的降低效果只是玫瑰或正当红,甚至被描述为在颜色上是“玫瑰红”。

的问题是,我们的文档=真正的现场有一吨的项目被描述为“玫瑰红”。更糟糕的是,实际的红玫瑰没有“红”和“玫瑰”,因为这些值将来自不同的领域。因此,我们得到几百个完全不相关的结果。

我们希望做的是两种:

A.搜索的主文件,然后相应地搜索我们每一个其他领域和提升(但不硬滤波器)。如果术语“玫瑰”出现在其中一个项目名称中,并且“红色”显示为其中一个属性值,则该结果应该具有较高的分数。这给了我们在理论上按照相关性排序的最佳结果。

B.搜索一次,促进如果值是任何的“增强型”字段中的所有领域。

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

这两个结果实际上是相同。我们只是无法弄清楚如何用Haystack做他们任何一个。或者如果我们不得不退回到原始查询如何写一个solr查询来完成这个。

+0

你可以发表你的文件的例子,告诉哪些你想排名更高,哪些更低? – arun 2013-02-17 04:31:27

回答

1

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

您可以检查Solr edismax query parser配置: -

  1. 字段要在搜索 - 主要是选择结果
  2. 相关性的字段上的可变提升 - 确定字段的重要性
  3. 对于不同字词组合的可变提升例如单个单词,词组搭配,瓦配以污,以确定相关
  4. 提供对其他领域的额外提振

这将帮助你按照领域和文字组合相应的过滤结果,并责令其匹配

+0

这最终成为我整个周末想出的最佳答案。不幸的是,这是一个痛苦。 Haystack被设计成后端不可知的,并且提供了一个很好的ORM,比如用于查询搜索引擎的包装。 DisMax不受支持。所以我不得不通过它来添加支持,但仅限于solr后端。 – John 2013-02-18 17:17:17

相关问题