在Lucene中为多个用户的数据编制索引的最佳做法是什么?

时间:2013-05-22 18:56:50

标签: java lucene indexing

我有一个多用户系统。每个用户都创建可索引的内容,但每个用户只能搜索您自己的内容。

还有什么更好的方法?

  1. 创建一个目录索引,索引其中的所有内容,然后在搜索时进行过滤。
  2. 为每个客户创建目录索引并显示所有结果

1 个答案:

答案 0 :(得分:1)

如果不需要在用户的内容之间共享数据,我会选择第二种方式。过滤会增加开销,搜索可能需要更长时间,因为语料库会更大。更不用说可伸缩性问题,不必要的GC开销等等。

缺点是您可能无法从字段缓存中受益,因为您每次都必须为每个用户打开/关闭索引。但是,如果您可以确定哪些用户仍然处于活动状态并保持其读者处于打开状态,则可以减轻这种情况。

Sotirios Delimanolis提出了一个观点,即10M目录可能很难管理。这是有效的 - 单个目录中的许多文件/目录在大多数文件系统中都不会扩展。但您始终可以分发这些目录,以便它们形成nice balanced tree