0

您好我正在使用 Lucene.Net 和 NHibernate.Search 为 Web 应用程序开发搜索功能。该应用程序被许多公司使用,但作为单一服务运行,为不同的公司使用不同的数据库。因此,我需要为每个数据库创建一个索引目录,而不是为整个应用程序创建一个目录。有没有办法在 Lucene.Net 中实现这一点?

我还考虑将每个公司的索引存储在相应的数据库中,但还没有找到任何令人满意的组件。我已经阅读了 Compass 和 JdbcDirectory for Java,但我需要 C# 或 NHibernate 的东西。有谁知道是否有 JdbcDirectory 的端口或 C# 的类似端口?

4

1 回答 1

1

嗯,看起来您无法使用普通的 nhibernate.search 在会话工厂级别更改任何内容。您可能需要单独的配置实例,或者尝试使用Fluent NHibernate Search的方式来减轻痛苦。

从项目的 wiki 拼凑起来,您似乎可以执行以下操作来启动指向不同数据库/索引目录的单独会话工厂:

Fluently.Configure()
    .Database(SQLiteConfiguration.Standard.InMemory())
    .Search(s => s.DefaultAnalyzer().Standard()
                             .DirectoryProvider().FSDirectory()
                             .IndexBase("~/Index")
                             .IndexingStrategy().Event()
                             .MappingClass<LibrarySearchMapping>())
    .BuildConfiguration()
    .BuildSessionFactory();

“IndexBase”属性和连接是您需要为每个客户定义的部分。设置会话工厂后,您可以使用当前使用的任何策略来解决它们。

希望能帮助到你

于 2011-04-09T15:48:01.537 回答