Lucene搜索结果排序的客户订单列表(唯一的每个用户)(Lucene search results

2019-08-03 01:05发布

我已验证我的应用程序的用户谁有权访问多达50万项的共享数据库。 每个用户都有自己的面向公众的网站,需要在自己的网站上显示的项目(认为给予好评)优先级的能力。

出50万个的项目,他们最多只能给200个项目优先,项目的其余部分的顺序不太重要。

每个用户将项目优先考虑有所不同。

我最初问过类似的问题的MySQL这里mysql的结果通过列表排序是针对每个用户独特的 ,并得到一个很好的答案,但我认为一个更好的选择可能是选择非SQL索引的解决方案。

可这在Lucene的完成?有没有这将是这更好的另一种搜索技术。

PS。 谷歌实现了类似类型的设置与他们的搜索结果,你可以优先考虑,如果你已经登录排除自己的搜索结果。

更新:重新加标签与狮身人面像,因为我一直在阅读的文档,我相信这可能是能够做什么,我期待与“每个文档的属性值”存储在内存中 - 感兴趣地听到从狮身人面像大师对此有何反馈

Answer 1:

你肯定会想构建索引时项目的ID存储在每个文档对象。 有几个方法可以做到下一步,但一个简单的人会采取优先项目,并把它们添加到您的搜索查询,这样的事情对每个专项:

"OR item_id=%d+X"

其中X是你想使用升压量。 你可能需要凭经验调整这个号码,以确保只是被“upvoted”不把它放到一个列表搜索完全无关的东西的顶部。

这样做,这样至少会阻止你很多的,将要求您遍历整个结果集恼人的后处理步骤 - 希望正确的排序将在那里直接从查询索引。



文章来源: Lucene search results sort by custom order list (unique to each user)