1

我有一个使用 Lucene.Net 和 NHibernate.Search 作为全文搜索引擎的 Web 应用程序。NHibernate.Search 的设置使得每当数据库中发生更改时,它都会传播到 Lucene 索引。

Web 应用程序使用 4 个工作进程运行。首先,这是一个问题吗?我注意到 Lucene 索引不是 100% 与数据库同步。对数据库的某些更改未出现在 Lucene 索引中。但是,当我手动尝试重新索引数据时,效果很好。

在多进程环境中使用 Lucene.Net 是否有任何并发​​影响?

4

1 回答 1

0

这听起来像是一个打开的 IndexWriter 锁定索引目录的问题。一个工作进程将锁定其他进程的索引。

只要每个索引只有一个写入器,Lucene.Net 就可以在多进程环境中使用。不同的目录实现以不同的方式强制执行此操作,通常涉及名为write.lock.

一个常见的解决方案是有一个单独的搜索过程来处理索引和搜索。

于 2013-05-04T09:51:36.173 回答