使用Lucene.Net的几个数据库设置

时间:2011-04-09 10:03:51

标签: lucene.net indexing nhibernate.search

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

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

1 个答案:

答案 0 :(得分: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”属性和连接是您需要为每个客户定义的部分。一旦您设置了会话工厂,您就可以使用当前使用的任何策略来解决它们。

希望有所帮助