2016-10-04 15 views
0

私はインデックスを作成しようとしているUserエンティティを持っています。私は現在、Hibernate-Searchを見ていて、パフォーマンスに関して問題を見つけました。多くのコレクションを含むエンティティをインデックスする

私のPOJOにはCollectionsがたくさんあります。私はしかし、これらのフィールドを埋めるために探していない。誰かが「MassIndexer」を使ってこれを行う方法を知っていますか?ここで

は私のPOJOこの例で

@Entity 
@Indexed 
public class User { 
    @Id 
    private long id; 

    @Field 
    private List<Address> addresses; // Address.street is what I am looking for 

    @Field 
    private String firstName; 

    @Field 
    private String lastName; 

    private List<AKA> akas; 

    private List<Wife> wives; 

    ... 

} 

の抜粋ですが、私はMassIndexerを実行したときしかし、私は他のすべてのCollection sがロードされてき見ています、@Fieldでマークされていない何かをインデックス化を避けるために探しています。

は現在、ここで私は

fullTextSession.createIndexer().startAndWait(); 

を再インデックスてる方法ですすべてのアイデアは、私のインデックス作成時間を短縮するために、これを回避する方法には?

答えて

0

Hibernate Searchは、索引を構築するために必要なリレーションに「ナビゲート」するだけで、必要なレイジーコレクションのロードをトリガします。

Hibernateが他のコレクションをロードしている場合、おそらく、これらのコレクションが遅延結合としてマップされていないことが原因です。 すべてのリレーションが怠け者としてマークされていることを確認してください。これは、実行中に怠惰な関係を望むような場合には良い方法です。たとえば、HQLで "フェッチロード"命令を使用します。

具体的には、コレクションをマッピングする方法が原因である可能性があります。Listを注文列なしで使用すると、非常に非効率的なバッグとして扱われます。

関連する問題