用户特定Lucene搜索

用户特定Lucene搜索,lucene,Lucene,我不认为这是一个非常模糊的Lucene问题,但不知何故,我似乎无法找到一个很好的解决方案。我将举一个例子 假设我正在建立一个新闻文章网站。注册用户可以为他们感兴趣的文章添加书签。我想让用户只搜索他/她收藏的文章。举个例子,我们还假设一个用户可以为数千篇文章添加书签,而我们的数据库中有数十万用户。如何为这个问题构建一个可扩展的解决方案 非常感谢 这是一个非常典型的Lucene问题,因为它不支持连接。更具体地说,没有一流的支持,你必须找到解决办法。我可以提出一些建议: 您可以拥有一个数据库,其中包含

我不认为这是一个非常模糊的Lucene问题,但不知何故,我似乎无法找到一个很好的解决方案。我将举一个例子

假设我正在建立一个新闻文章网站。注册用户可以为他们感兴趣的文章添加书签。我想让用户只搜索他/她收藏的文章。举个例子,我们还假设一个用户可以为数千篇文章添加书签,而我们的数据库中有数十万用户。如何为这个问题构建一个可扩展的解决方案


非常感谢

这是一个非常典型的Lucene问题,因为它不支持连接。更具体地说,没有一流的支持,你必须找到解决办法。我可以提出一些建议:

  • 您可以拥有一个数据库,其中包含
    用户
    文章
    书签
    表(后者将具有指向前两个的外键)。你也可以用Lucene索引文章。在对文章进行搜索时,您可以编写一个Lucene
    过滤器
    ,该过滤器将排除当前用户未添加书签的所有文章

  • 您可以在Lucene中为所有文章和书签编制索引,如果您使用单独的索引,这可能是最好的。然后,您可以运行一个书签查询(检索当前用户已将哪些文章作为书签),然后运行另一个单独的文章查询。与上一个示例一样,您可以使用第一个查询的结果排除当前用户未添加书签的所有其他文章


  • 我个人更喜欢选项#1,因为这是经典的关系结构,数据库正是为此目的而设计的。使用选项#2,当用户被删除时,您必须同时修改用户存储和Lucene索引。

    谢谢,Mindas。如果我在一个过滤器中放入数千个,甚至数万个ID,这会是一个问题吗?如果你的过滤器真的很快的话就不会了。请记住,每次搜索都必须通过过滤器才能检查每个文档的合格性。所以他是你的朋友。