我知道我提出了一个棘手的问题,但未来属于大胆的!
问题:SOLR是否提供了一种方法来考虑过去的搜索和用户操作,以便下次完成相同的查询时,排名会略微改变为其他用户选择的内容?< / p>
附带问题:如何优化查询以使结果字段的长度更接近精确查询并省略冗余字?
当用户搜索特定的葡萄酒时(比方说:“chateau latour”),solr总是首先给出错误的结果,例如:
理想情况下,第三款葡萄酒应该是此查询的第一款,因为超过80%的人会在搜索这些词时选择这一款。寻找“chateau latour pomerol”的人肯定会选择第4个。
由于“Latour”的冗余,这似乎排名第一,这是完全错误的。由于不明原因,第二名的排名优于第三名。搜索只在这些葡萄酒的标题上进行,没有其他领域。
有关如何将结果用户过去的操作提供给SOLR的任何想法? 谢谢!
注意:工作&amp;关于boose相关主题的编程是惊人的;)
答案 0 :(得分:2)
SOLR是否提供了一种考虑过去搜索和用户的方法 操作,以便下次完成相同的查询时,排名具有 略微改变了其他用户选择的内容?
没有开箱即用。但您可以做的是定期注册这些选择并相应地更新文档(例如,有一个名为popularity
的字段)。其余的就像adding a boost一样简单。
如何优化查询以便结果字段的长度为 更接近确切的查询和冗余的单词被省略?
您需要将相似度算法从default (TF-IDF)更改为自定义算法。
当用户搜索特定的葡萄酒时(比方说:“城堡 latour“),solr总是首先给出错误的结果,例如:
- ChâteauTriniacCôtesduRoussillon Villages Latour Latour de France
- ChâteauLatourBeerenauslese Brand - Yountville
- ChâteauLatourGrand Vin - Pauillac
- Vin - PauillacChâteauLatouràPomerol
醇>
我没有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。