Lucene搜索结果按自定义顺序列表排序(每个用户都是唯一的)

我已经在我的应用程序中validation了用户,他们可以访问最多500,000个项目的共享数据库。 每个用户都有自己的面向公众的网站,并且需要能够在他们自己的网站上对显示的项目(想想upvote)进行优先排序。

在500,000件商品中,他们可能只有200件优先商品,其余商品的订单不太重要。

每个用户将以不同方式对项目区分优先级。

我最初在这里问了一个类似的mysql问题Mysql结果按列表排序,这对每个用户都是唯一的并得到了一个很好的答案,但我相信更好的选择可能是选择非sql索引解决方案。

这可以在Lucene中完成吗?还有另一种搜索技术会更好吗?

PS。 Google会在搜索结果中实施类似的类型设置,如果您已登录,则可以优先处理并排除自己的搜索结果。

更新:重新标记为sphinx,因为我一直在阅读文档,我相信它可能能够做我想要的“每个文档属性值”存储在内存中 – 有兴趣听到狮身人面像大师的任何反馈

在构建索引时,您肯定希望在每个文档对象中存储item的id。 有几种方法可以执行下一步,但是一个简单的方法是将优先级项目添加到您的搜索查询中,对于每个特殊项目都是这样的:

"OR item_id=%d+X" 

其中X是您想要使用的助推量。 你可能需要凭经验调整这个数字,以确保只是“upvoted”不会把它放在列表的顶部,搜索完全不相关的东西。

这样做至少会阻止你进行许多恼人的后处理步骤,这些步骤需要你遍历整个结果集 – 希望在查询索引时能够正确排序。