2011-04-09 25 views
0

嗨 我正在用Lucene.Net和NHibernate.Search開發一個Web應用程序的搜索功能。該應用程序被許多公司使用,但作爲單一服務運行,爲不同的公司使用不同的數據庫。因此,我需要每個數據庫的索引目錄,而不是整個應用程序的一個目錄。有沒有辦法在Lucene.Net中實現這一點?在Lucene.Net中使用多個數據庫設置

我也考慮將每家公司的索引存儲在respecitive數據庫中,但沒有找到任何令人滿意的組件。我已閱讀關於Compass和Java的JdbcDirectory,但我需要C#或NHibernate的東西。有誰知道是否有一個JdbcDirectory的端口或類似C#的東西嗎?

+1

不知道,如果你能到達那裏使用NHibernate的搜索,但你可以很容易地做到這一點與Lucene.NET本身,但它需要一個位編碼。 – 2011-04-12 00:07:11

回答

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」特性和連接您需要爲每個客戶定義部分。一旦你建立了會話工廠,你可以使用當前使用的任何策略來解決它們。

希望它可以幫助

+0

謝謝,解決了這個問題。我只是爲每個公司/用戶設置不同的IndexBase:es。似乎工作非常流暢 – user699807 2011-04-21 16:19:40

+0

太棒了,我沒有使用流利的NHibernate搜索,但我很高興聽到它的效果。我喜歡使用屬性獲取字段配置的想法,這是我對NHibernate.Search主要抱怨之一。 – AlexCuse 2011-04-21 19:05:17