用户特定的Lucene搜索

时间:2013-01-22 18:05:35

标签: lucene

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

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

非常感谢!

1 个答案:

答案 0 :(得分:0)

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

  1. 您可以拥有一个数据库,该数据库包含usersarticlesbookmarks个表(后者的外键指向前两个)。你也可以在Lucene索引文章。在对文章进行搜索时,您可以编写一个Lucene Filter,它会排除当前用户未加书签的所有文章。

  2. 您可以索引Lucene中的所有文章和书签 - 如果您使用单独的索引执行此操作,则最好。然后,您可以运行书签查询(以检索当前用户已添加书签的文章),然后对文章运行另一个单独的查询。与前面的示例一样,您可以使用第一个查询的结果排除当前用户未加入书签的所有其他文章。

  3. 我个人更喜欢选项#1,因为这是经典的关系结构,数据库就是为了这个目的而设计的。使用选项#2,您将不得不在用户被删除时修改用户存储和Lucene索引。