SOLR - 优化搜索结果的相关性

时间:2013-01-26 16:44:25

标签: search optimization solr feedback

我知道我提出了一个棘手的问题,但未来属于大胆的!

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

附带问题:如何优化查询以使结果字段的长度更接近精确查询并省略冗余字?

背景:

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

  1. ChâteauTriniacCôtesduRoussillon Villages Latour Latour de France
  2. ChâteauLatourBeerenauslese Brand - Yountville
  3. ChâteauLatourGrand Vin - Pauillac
  4. ChâteauLatouràPomerol
  5. 应该是什么:

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

    我对它的理解:

    由于“Latour”的冗余,这似乎排名第一,这是完全错误的。由于不明原因,第二名的排名优于第三名。搜索只在这些葡萄酒的标题上进行,没有其他领域。

    有关如何将结果用户过去的操作提供给SOLR的任何想法? 谢谢!

    注意:工作&amp;关于boose相关主题的编程是惊人的;)

2 个答案:

答案 0 :(得分:2)

  

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

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

  

如何优化查询以便结果字段的长度为   更接近确切的查询和冗余的单词被省略?

您需要将相似度算法从default (TF-IDF)更改为自定义算法。

  

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

     
      
  1. ChâteauTriniacCôtesduRoussillon Villages Latour Latour de France
  2.   
  3. ChâteauLatourBeerenauslese Brand - Yountville
  4.   
  5. ChâteauLatourGrand Vin - Pauillac
  6.   
  7. Vin - PauillacChâteauLatouràPomerol
  8.   

我没有Solr在工作,所以我modelled your scenario in Lucene使用StandardAnalyzer。我得到的顺序略有不同:在链接的示例中,结果是:4,1,2和3(最后两个具有相同的分数)。您使用的是哪种分析仪?

答案 1 :(得分: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的回答here