2017-04-01 16 views
0

返されたファセットの1つで元のクエリを絞り込みたいが、これはうまくいかない、つまり結果が返されない。最初に私がlist()メソッドを呼び出すと、私は8個の製品(合計15個のうちsetMaxResults()メソッドによって制限されています)と2個のファセットのリストを取得します:1つはカウント14で、もう1つはカウント1です。ファセットを現在のクエリに追加してlist()メソッドでクエリを再実行すると、合計14個の製品が表示されると予想されますが、代わりに空のリストが返されます。私はそれがドキュメンテーションとは違う何かを見ることができません。 ProductエンティティのHibernate Search - クエリ上のファセットを適用すると結果が返されない

productCategoryIdフィールド:

Buldingクエリ

@Field(analyze = Analyze.NO) 
@NumericField 
@Facet(encoding = FacetEncodingType.STRING) 
private Long productCategoryId; 

答えて

0

私は、これはバグで怖いです。頼んでくれてありがとう:私たちはそれを認識しているので、私たちはそれを修正することができます。このバグのチケットはHSEARCH-2668です。

回避策があります。フィールドを非数値にすることができます。ただ、@NumericField注釈を削除し、インデックスにorg.hibernate.search.bridge.builtin.LongBridgeを使用して:

@Field(analyze = Analyze.NO, bridge = @FieldBridge(impl = org.hibernate.search.bridge.builtin.LongBridge.class)) 
@Facet(encoding = FacetEncodingType.STRING) 
private Long productCategoryId; 

あなたが他の目的のために、このフィールドが必要な場合は、あなただけの2番目のフィールドを作成し、その2番目のフィールドにファセットを適用することができます。

@Field(analyze = Analyze.NO) 
@NumericField 
@Field(name = "productCategoryId_facet", analyze = Analyze.NO, bridge = @FieldBridge(impl = org.hibernate.search.bridge.builtin.LongBridge.class)) 
@Facet(forField = "productCategoryId_facet", encoding = FacetEncodingType.STRING) 
private Long productCategoryId; 
// Then use productCategoryId_facet instead of productCategoryId in your facet-enabled queries 
関連する問題