2011-04-27 50 views
0

Im使用Lucene.NET和NHibernate.Search建立一個應用程序的搜索功能。索引現有的數據,我用這個方法:StandardAnalyzer似乎沒有參與索引數據時,NHibernate.Search

public void SynchronizeIndexForAllUsers() 
    { 
     var fullTextSession = Search.CreateFullTextSession(m_session); 
     var users = GetAll(); 
     foreach (var user in users) 
     { 
      if (!user.IsDeleted) 
      { 
       fullTextSession.Index(user); 
      } 
     } 
    } 

在那裏我有標記我想索引的字段有以下屬性:

[Field(Index.Tokenized, Store = Store.Yes, Analyzer = typeof(StandardAnalyzer))] 
public virtual string FirstName 
    { 
     get { return m_firstName; } 
     set { m_firstName = value; } 
    } 

但是當我再檢查在盧克領域的indicies仍然有大號,逗號等應該由StandardAnalyzer刪除。

有沒有人知道我在做什麼錯?

回答

0

我有類似的問題給你,但我一直在嘗試使用WhitespaceAnalyzer。在Field屬性中設置它也不適用於我。

我已經結束了全局設置。我使用FluentNHibernate進行配置,它看起來像:

this._sessionFactory = 
    Fluently.Configure() 
    .Database(MsSqlConfiguration.MsSql2005 
     .ConnectionString(cs => cs 
     // cut 
    .ShowSql() 
    ) 
    .Mappings(m => m.FluentMappings 
    // cut 
    ) 
    .ExposeConfiguration(cfg => 
    { 
     // important part: lucene.net and nhibernate.search 
     cfg.SetProperty("hibernate.search.default.directory_provider", typeof(NHibernate.Search.Store.FSDirectoryProvider).AssemblyQualifiedName); 
     cfg.SetProperty("hibernate.search.default.indexBase", @"~\Lucene"); 
     cfg.SetProperty("hibernate.search.indexing_strategy", "event"); 
     cfg.SetProperty(NHibernate.Search.Environment.AnalyzerClass, typeof(WhitespaceAnalyzer).AssemblyQualifiedName); 
     cfg.SetListener(NHibernate.Event.ListenerType.PostUpdate, new FullTextIndexEventListener()); 
     cfg.SetListener(NHibernate.Event.ListenerType.PostInsert, new FullTextIndexEventListener()); 
     cfg.SetListener(NHibernate.Event.ListenerType.PostDelete, new FullTextIndexCollectionEventListener()); 
    }) 
    .BuildSessionFactory(); 

看看NHibernate.Search.Environment.AnalyzerClass。有趣的是,它不會用於通用全文查詢(我認爲Lucene將使用StandardAnalyzer),但這是另一回事:)。

希望這會有所幫助。

+0

它似乎現在工作,當我添加分析儀類屬性。但仔細一看,即使沒有它,它似乎也能工作。但盧克仍然按照分析前的方式展示每個領域。 – user699807 2011-04-28 06:35:16

+0

失去了對此的控制,不知道是否分析了字段。我現在只是說我的查詢不再區分大小寫,這是我最初的問題,所以我會將其標記爲已解決 – user699807 2011-04-28 06:45:04