如何让Lucene更快地搜索?

时间:2014-04-14 16:36:00

标签: java performance lucene indexing

所有。 我有12个大型索引,每个大于20GB。 我的应用程序试图使IndexSearcher的实例搜索用户的每个请求。因为用户可以选择他想要搜索的索引。 但我的应用程序的性能非常非常糟糕。 用户应该等待大约5分钟进行一次搜索。 我的应用程序每页显示50个文档。当然,我只重复50次以检索'for statement'显示的数据。 对于性能测试,我尝试使用MatchAllDocsQuery进行搜索,大约需要10秒才能找到7,598,870个文档。

我不知道为什么我的申请太慢了。

经过多次谷歌搜索...... 我刚刚阅读了一篇文章,说明使IndexSearcher的实例成本很高。 如果我合并了所有索引,合并后它将是317GB,然后只使用一个IndexSearcher实例来搜索w / filter,它会比以前更快吗?

请帮帮我。我无法自由测试,因为我的应用程序在客户的Intranet上。

抱歉我的英语。

1 个答案:

答案 0 :(得分:0)

您不会获得比official wiki中列出的更多一般性建议。

然而,为了回答你关于昂贵的索引搜索者的观点 - 搜索者本身很便宜,IndexReader是昂贵的。

您可以缓存12个读者(针对每个索引),并创建multi searchers(如果使用Lucene 3.6.0)或查看SlowCompositeReaderWrapper以获取Lucene 4.0 +。