我的Java EE应用程序使用Lucene 4.在Lucene索引中,我有1,000万个人的全名。当我使用搜索时,Lucene会返回不同的结果。相同的应用程序在Windows上的开发环境中工作正常,在AIX上测试环境,但在生产服务器上,Lucene搜索返回的记录少得多。同样的查询返回800个开发结果和20个生产结果。我们将在产品上尝试AIX和Red Hat,但仍然没有运气。Lucene搜索返回不同的结果
我将Lucene索引文件从生产环境复制到开发环境,并搜索了相同的查询和相同的应用程序:在我的环境中,所有工作正常,有800个结果。我开始调试应用程序,将Lucene查询复制为文本,并在我的环境中使用Luke的查询 - 有800个结果。生产负载很高,我会尽量加载开发环境,但是Lucene工作稳定并且总是返回800.
哪里可以找到问题的根源?
这通常是由于不同的分析仪,特别是如果你在Java和.net之间混合。您是否可以验证您是否在所有环境中使用相同的分析仪,具有相同的设置和停用词? – sisve
在所有环境中都有相同的源代码,但JRE的版本不同。索引更新时,使用StandardAnalyzer。在查询过程中,未在源代码中明确指示分析器。我会尝试在Luke中使用一些不同的分析器进行查询,但总会有800个结果 – bobzer
您在哪里将索引存储在文件系统或内存中? – Yogesh