1

我知道我在问一个困难的问题,但未来属于大胆的人!

问题: SOLR 是否提供了一种方法来考虑过去的搜索和用户操作,以便下次完成相同的查询时,排名会稍微改变其他用户的选择?

边问:如何优化查询,使结果字段的长度更接近准确的查询,省略多余的词?

背景:

当用户搜索特定的葡萄酒(比如说:“chateau latour”)时,solr 总是首先给出错误的结果,例如:

  1. Château Triniac Côtes du Roussillon Villages Latour Latour de France
  2. Château Latour Beerenauslese 品牌 - 扬特维尔
  3. Château Latour Grand Vin - 波亚克
  4. Château Latour à Pomerol

应该是什么:

理想情况下,第 3 款酒应该是这个查询的第一个,因为超过 80% 的人在搜索这些词时会选择这个。搜索“chateau latour pomerol”的人肯定会选择第四个。

我对它的理解:

似乎第一名的排名很好,因为“Latour”的冗余是完全错误的。由于未知原因,第二名的排名高于第三名。搜索仅针对这些葡萄酒的标题,没有其他字段。

关于如何将用户过去对结果的行为反馈给 SOLR 的任何想法?谢谢!

注意:在 boose 相关主题上工作和编程非常棒;)

4

2 回答 2

2

SOLR 是否提供了一种方法来考虑过去的搜索和用户操作,以便下次完成相同的查询时,排名会稍微改变其他用户的选择?

不是开箱即用。但是您可以做的是popularity定期注册这些选择并相应地更新文档(例如,有一个名为 的字段)。其余的就像添加 boost一样简单。

如何优化查询,使结果字段的长度更接近准确的查询,省略多余的词?

您需要将相似性算法从默认 (TF-IDF)更改为您的自定义算法。

当用户搜索特定的葡萄酒(比如说:“chateau latour”)时,solr 总是首先给出错误的结果,例如:

  1. Château Triniac Côtes du Roussillon Villages Latour Latour de France
  2. Château Latour Beerenauslese 品牌 - 扬特维尔
  3. Château Latour Grand Vin - 波亚克
  4. Vin - Pauillac Château Latour à Pomerol

我手头没有 Solr,所以我在 Lucene 中为您的场景建模,使用StandardAnalyzer. 我得到的顺序略有不同:在链接的示例中,结果是:4、1、2 和 3(最后两个得分相同)。你用的是哪款分析仪?

于 2013-01-26T22:39:25.470 回答
1
how to optimise queries so that the length of the result field is closer to the exact query? 

omitNorms字段是否设置为true?您可以设置omitNorms=false并尝试按什么顺序对结果进行排序吗?(我的猜测是 4、3、2、1。)在此处查看@Mike 的答案。

于 2013-01-27T05:36:22.993 回答