StandardAnalyzerは、データのインデックス作成時に関与していないようです。

StackOverflow https://stackoverflow.com/questions/5802471

  •  24-10-2019
  •  | 
  •  

質問

lucene.netおよび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; }
    }

しかし、ルークの指標を検査するとき、畑にはまだ大文字、コンマなどがあります。これは標準分析器によって削除されるべきでした。

誰かが私が間違っていることを知っていますか?

役に立ちましたか?

解決

私はあなたと同様の問題を抱えていましたが、私はホワイトスパースアナリザーを使用しようとしています。フィールド属性に設定することも、私にとってもうまくいきませんでした。

私はそれをグローバルに設定することになりました。私は構成に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を使用すると思います)が、それは別の話です:)。

お役に立てれば。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top