1

我一直在忙着将我们的 n* 堆栈升级到更新的版本。我们一直使用 FluentNhibernate 进行配置,使用 Nhibernate.search 与 Lucene.Net 进行全文搜索。一切正常,直到我将库的各种版本更改为以下内容:

  • FluentNHibernate.dll:1.0.0.593
  • NHibernate.dll:2.1.0.4000
  • NHibernate.Search.dll:2.0.0.1001
  • Lucene.Net.dll:2.3.1.3

堆栈一直像以前一样工作,但我注意到一些奇怪的事情;而在 Lucene 索引目录为每个索引类包含一个子目录之前,它现在使用两个子目录,后缀为一个整数。

我们从

LuceneDirectory
.Class1
.Class2

LuceneDirectory
.Class1.0
.Class1.1
.Class2.0
.Class2.1

我浏览了一下 FluentNhibernate 的配置构建,发现对于每个映射,我创建了两个导入,一个带有映射的类的全名,一个没有(如果我映射“用户”类,我将有一个映射,以及两个导入“POCOAssembly.User”和“User”)。这些目录是在 FullTextIndexEventListener 的 Initialize 调用中创建的。

有没有人偶然发现同样的问题?我通读了 nhibernate.search 发行说明,但没有找到有关映射更改的任何信息;有什么我想念的吗?图书馆是否发生了重大变化?


编辑

我意识到指出我的映射类和我的映射派生自用于审计目的的公共基础对象(创建日期/更新时间)可能很重要。

4

1 回答 1

1

我发现NHibernate JIRA中已经报告了这个问题:https ://nhibernate.jira.com/browse/NHSR-22

发生的事情是我在 NHibernate 配置中设置了两个默认属性;"hibernate.search.default.directory_provider" 和 "hibernate.search.default.indexBase" 这些默认配置被认为是两个分片,因为代码暂时没有经过测试。

一种解决方法是删除“hibernate.search.default.directory_provider”条目,因为它默认为正确的条目。

于 2010-01-11T12:59:05.593 回答