我正在尝试为新应用实施搜索引擎。
该应用程序允许人们评价项目(+1或-1) - 给予项目+ ve或-ve得分。
当人们搜索商品时,我想考虑他们的评级并相应地订购结果。如果该项目是匹配项,则应显示该项目。但如果它与高分相匹配,那么结果应该会提高一些。
一场非常好的比赛应该赢得一场相当不错的高分,所以它需要与其余部分一起加权(即我提升了我的头衔)。
任何方式都没有停留在Solr上,只是今天刚开始玩。
答案 0 :(得分:0)
使用Solr,您可以使用保存差异的文档来维护字段 差异可以在总+ 1和-1之间。
Solr允许您使用function queries提升字段值 因此,您可以使用差异字段上的提升进行查询,其中文档的差异得分优于其他字段。
从索引前端,由于这种差异会经常发生变化,因此每次都需要更新相应的文档。 Solr不允许更新单个字段,因此您需要处理差异字段的增量更新。
如果您担心这一点,可以尝试使用ExternalFileField 这允许在单独的文件中将某些文档字段(例如排名,索引外部的流行度)映射到单独的文件中 可以更新文件并提交索引以反映更改 该字段还可以与函数查询一起使用,以根据需要提升结果,但是有很多限制。
答案 1 :(得分:0)
您可以按存储排名的字段订购结果。
sqs.filter(content='blah').order_by('rating')