24

优化 Lucene 性能的各种方法是什么?

我应该使用缓存 API 来存储我的 lucene 搜索查询,以便节省再次构建查询的开销吗?

4

6 回答 6

12

快速提示:

  • 保持索引的大小很小。在不需要时消除规范、术语向量。仅在必须时才为字段设置存储标志。
  • 明显但经常重复的错误。只创建一个 Searcher 实例并重用。
  • 保存在快速磁盘上的索引中。RAM,如果你是偏执狂。
于 2009-03-21T06:44:54.660 回答
4

欺骗。使用RAMDirectory将整个索引加载到内存中。之后,一切都在飞速发展。:)

于 2009-03-21T00:56:54.450 回答
4

这里有很多死链接。

这些(有点官方的)资源是我要开始的地方:

http://wiki.apache.org/lucene-java/ImproveIndexingSpeed

http://wiki.apache.org/lucene-java/ImproveSearchingSpeed

于 2010-12-22T10:16:56.117 回答
3

我发现性能问题的最佳答案是对其进行分析。指南很棒,但是有很多变量会影响性能,例如数据集的大小、正在执行的查询类型、数据类型等。

获取Netbeans 分析器或类似的东西并尝试不同的方式。使用 Mitch 链接的文章,但要确保你真正测试了哪些有帮助,哪些(通常令人惊讶)有害。

与代码中的性能改进相比,您从 Lucene 获得的任何性能差异也很有可能很小。分析器也会指出这一点。

于 2009-03-21T05:03:40.863 回答
1

对于 64 位机器,使用MMapDirectory而不是RAMDirectory ,正如Lucene 的核心提交者之一在此处很好解释的那样。

于 2015-08-26T09:55:23.560 回答