订单搜索结果基于带有Solr的ID数组

时间:2011-08-28 18:05:36

标签: ruby-on-rails search lucene solr sunspot

给定一系列id,范围从大约1,000到10,000个项目,您如何优先考虑与数组中的id匹配的solr搜索结果?

这是我想要实现的:当我执行关键字或方面搜索时,我想优先考虑与我的数组中的id匹配的结果。该数组对于每个用户都是唯一的,因此我不能将其作为字段索引并执行简单的order_by(),因为我必须对每个用户具有索引。

我的第一个想法是使用search_ids()方法执行搜索,该方法只返回记录的id(比普通搜索()快得多)然后根据我的值重新排序搜索结果数组,然后直接从数据库中获取记录(因为我已经有了确切的ID)。有了这个解决方案,我将不得不将solr搜索的分页提高到一个非常高的数字(至少是数组的大小)。这可能会使事情变慢。

此解决方案的另一个问题是分页。我必须将结果Id和我的数组存储在请求之间的某个位置,以便在分页期间保持顺序。这需要我自己处理分页。

另一种可能的解决方案是在每个特定用户的索引条目中存储id数组。执行搜索时,我可以查看每个结果,并优先考虑在索引字段中具有我的id的那些结果。不确定这甚至会起作用。

非常感谢任何想法。这是一个使用solr 3.3和sunspot 1.2的rails应用程序。

0 个答案:

没有答案