在我的 Solr 查询中,我想将最近访问的文档排序到顶部(“访问”表示由用户操作打开)。没有其他搜索条件对我有影响:在文本与查询匹配的文档中,我希望它们按最近使用的顺序排列。我只能想到两种方法来做到这一点:
1) 在每个文档中包含一个“上次访问”日期字段,以便 Solr 对其进行排序。我听说可以非常快速地对 Trie Date 字段进行排序。问题当然是保持该字段是最新的,这需要存储每个文档的文本,以便我可以删除和重新添加具有更新的“上次访问”字段的任何文档。可变字段可以避免这种情况,但 Lucene/Solr 仍然不提供可变字段。
2)或者,存储可变的“上次访问”日期并在另一个数据库中保持更新。这将要求 Solr 返回匹配文档的完整列表,其中可能包含数十万个文档。然后将这个庞大的文档 ID 列表与数据库中的日期进行匹配,然后进行排序。它适用于不常见的搜索词,但不适用于广泛的常见搜索词。
所以权衡是在 1) 索引大小加上每次访问文档时的处理成本和 2) 大查询开销之间,特别是对于非重点搜索词
我有其他选择吗?
最佳答案
http://lucidworks.lucidimagination.com/display/solr/Solr+Field+Types#SolrFieldTypes-WorkingwithExternalFiles
http://blog.mikemccandless.com/2012/01/tochildblockjoinquery-in-lucene.html
关于solr - 在 Lucene/Solr 中按最近访问排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9253772/