0

我们在 Web 应用程序中使用 Lucene .NET。我们从 SQL 数据库构建索引,然后对其进行搜索。

我们有一个令人困惑的情况:两台服务器上的相同数据库,相同的代码,相同的配置(相信我,我们已经彻底检查过了)。但是运行相同的搜索会返回截然不同的文档数量(一个产生很多,另一个不是这样)。

我们记录了针对 Lucene 运行的实际查询,并在 Lucene 查询分析器中运行了这些查询,我们在两台服务器上都得到了预期的结果。但是,通过我们的代码执行查询会在服务器之间给出完全不同的结果。

我们甚至在服务器之间复制了索引文件,我们得到了相同的结果——一台服务器总是给出很多结果,而另一台则没有。

我们检查了两台服务器的配置 - 两台服务器都是 Windows 2008 R2,64 位版本,都设置为相同的区域设置等。

我们很困惑 - 任何想法都非常感谢

4

1 回答 1

0

Luke 是一个使用可用的基于 java 的分析器的 java 应用程序。我希望 Luke 和 Lucene.Net 之间的结果会有所不同,特别是如果您使用与 java 版本不同的自定义分析器。

另外,请记住,anew TermQuery("f", "my value")会生成一个看起来像“f:my value”的查询,但是将它扔到 Luke 中会真正被解析为“f:my default-field:value”,即完全不同的搜索查询。

我将首先验证您使用的是正确的分析器,并且它们正在生成正确的令牌。我会检查文化敏感的东西,因为它们通常会在你最意想不到的时候偷偷摸摸。(以及进程在非系统语言环境下执行的情况,以及线程在执行期间更改其语言环境的情况。)

于 2013-05-04T13:04:45.940 回答