我们遇到的问题是将非相关结果作为我们搜索中的最高结果返回,我们正试图改善这种行为,但不确定如何。
我们有大约十几个字段的SearchIndex。 document = True字段是模板支持字段,我们已将大部分内容放入其中。在那里发现的一些东西与其他东西相比要少得多,即使它仍然有用。
举一个具体的例子:如果用户搜索“红玫瑰”,我们希望返回红玫瑰作为最佳结果...如果较低的结果只是玫瑰或只是红色,甚至被描述为是更好“玫瑰红”的颜色。
问题是我们的文件=真实字段有大量项目被描述为“玫瑰红”。更糟糕的是,实际的红玫瑰没有“红色”和“玫瑰色”,因为这些价值来自不同的领域。因此,我们得到的前几百个结果完全不相关。
我们想要做的是:
一个。搜索主文档,然后搜索我们的其他每个字段并相应地提升(但不是硬过滤器)。如果其中一个项目名称中出现“rose”一词,而“red”出现为其中一个属性值,则该结果应该具有更高的分数。这给我们理论上的最佳结果按相关性排序。
B中。一次搜索所有字段,如果该值是任何“提升”字段,则提升。
似乎使用字段提升应该是答案,但我们无法弄清楚如何表达它,因为基于字段的过滤是一种严格的排除,我们希望它只影响相关性评分。
这两者的结果实际上是相同的。我们无法弄清楚如何用Haystack做他们中的任何一个。或者,如果我们必须回退到原始查询,那么如何编写完成此操作的solr查询。
答案 0 :(得分:1)
我可以给你一些指示,因为我没有得到确切的用例: -
您可以查看Solr edismax query parser进行配置: -
这将帮助您过滤结果并根据字段和单词组合匹配
进行相应的排序