考虑以下假设:
- 我有 Java 5.0 Web 应用程序,我正在考虑使用 Lucene 3.0 进行全文搜索
- 会有超过 1000K 的 Lucene 文档,每个文档有 100 个单词(平均)
- 新文档必须在创建后立即可搜索(实时搜索)
- Lucene 文档经常更新名为 quality 的整数字段
在哪里可以找到 Lucene 3.0 近实时搜索的代码示例(简单但尽可能完整)?
是否可以获得按可能经常更新的文档字段(质量)之一排序的查询结果(对于已索引的文档)?文档字段的这种更新将不得不触发 Lucene 索引重建?这种重建的表现如何?如何有效地完成它 - 我需要一些完整解决方案的示例/文档。
但是,如果在这种情况下不一定需要重建索引 - 如何有效地对搜索结果进行排序?可能有查询返回大量文档(>50K),因此我认为从 Lucene 获取未排序的文档,然后按质量字段对它们进行排序,最后将排序列表划分为页面进行分页是效率低下的。
Lucene 3.0 是我在 Java 中的最佳选择还是应该考虑其他一些框架/解决方案?也许是 SQL Server 本身提供的全文搜索(我使用的是 PostgreSQL 8.3)?