java - 在 Lucene 中索引多个用户的数据的最佳实践是什么

标签 java lucene indexing

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

还有什么更好的方法吗?

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

最佳答案

如果不需要在用户内容之间共享数据,我会选择第二个选项。过滤会增加开销,并且随着语料库变大,搜索可能需要更长的时间。更不用说可扩展性问题、不必要的GC开销等等。

缺点是您可能无法从字段缓存中受益,因为您每次都必须为每个用户打开/关闭索引。但是,如果您可以识别哪些用户仍然活跃并保持其读者开放,那么这种情况就可以得到缓解。

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

关于java - 在 Lucene 中索引多个用户的数据的最佳实践是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16699583/

相关文章:

java - 谷歌数据流: set a DefaultUncaughtExceptionHandler

java - 如何从 XML 中删除不需要的标签

java - 调整 ElasticSearch 中的相关性

mysql - MariaDB/MySQL : Index hint ignored when there is left join

python - Pandas 按逻辑日期对数据框进行排序

java - 如何获取字体的行高,例如在 JTextArea 中?

java - 了解 Java 小程序

node.js - 使用 Solr 通过 Mongodb 和 nodejs 进行索引和搜索

amazon-ec2 - 批量查找ES瓶颈(附bigdesk截图)

javascript - 关联数组中的双索引