アプリケーションに Hibernate Search を採用しようとしていますが、価格帯に基づいて結果を制限するために、検索結果を範囲ファセットで制限することに行き詰まっています。
私のコード(スニペット):
Product.java には以下が含まれます。
@Field(analyze = Analyze.NO, store = Store.YES, bridge = @FieldBridge(impl = DoubleBridge.class))
@NumericField()
private double price = 0.0;
価格ファセットを構築する私の検索ハンドラー:
FacetingRequest priceFacetingRequest = builder.facet()
.name( "price" )
.onField("price")
.range()
.below(10.0)
.from(11.0).to(24.0)
.from(25.0).to(49.0)
.from(50.0).to(99.0)
.from(100.0).to(199.0)
.from(200.0).to(499.0)
.from(500.0).to(999.0)
.from( 1000.0 ).to( 1499.0 )
.above( 1500.0 )
.excludeLimit()
.createFacetingRequest();
facetManager.enableFaceting(priceFacetingRequest);
最後に、結果を一覧表示する前に、ファセットの 1 つを介して結果を制限します。
facetManager.getFacetGroup( "price" ).selectFacets( rangeFacet );
可能なすべての rangeFacets を試しましたが、結果を返すものはありません。range() ファセットの他に、同じように動作するさまざまなテキスト ファセットがありますが、結果は通常どおりフィルター処理されます。また、facetManager は facetRange の結果を返しますが、それでも試してみると、fullTextQuery.list() を呼び出したときに結果が 0 になります。
私は何が欠けていますか?
ありがとう !