【发布时间】:2012-03-04 10:57:25
【问题描述】:
在我的 Solr 查询中,我想将最近访问的文档排序到顶部(“访问”的意思是用户操作打开的)。没有其他搜索条件对我有影响:在文本与查询匹配的文档中,我希望它们按最近使用的顺序排列。我只能想到两种方法:
1) 在每个文档中包含一个“上次访问”日期字段,以便 Solr 对其进行排序。有人告诉我,Trie Date 字段可以非常快速地排序。问题当然是使该字段保持最新,这需要存储每个文档的文本,以便我可以删除并重新添加任何具有更新的“上次访问”字段的文档。可变字段可以避免这种情况,但 Lucene/Solr 仍然不提供可变字段。
2) 或者,存储可变的“上次访问”日期并将它们更新到另一个数据库中。这将要求 Solr 返回匹配文档的完整列表,其中可能包含数十万个文档。然后将这个巨大的文档 ID 列表与数据库中的日期进行匹配,然后进行排序。它适用于不常见的搜索词,但不适用于广泛的常见搜索词。
因此要在 1) 索引大小加上每次访问文档时的处理成本和 2) 大查询开销之间进行权衡,尤其是对于没有重点的搜索词
我还有其他选择吗?
【问题讨论】: