2017-04-01 28 views
0

我试图用返回的方面之一缩小原始查询的范围,但这似乎不起作用,即它没有带来任何结果。我第一次打电话给list()的方法,我得到了8种产品(总共15种,这些产品受限于setMaxResults()方法)以及两个方面的列表:一种是14,另一种是1。方面与当前查询并重新执行该查询与list()方法,我期待总共看到14个产品,但返回一个空列表。我看不到任何我在做的事情,这与文档不同。休眠搜索 - 在查询上应用方面不会带来任何结果

BULDING查询:

productCategoryId领域的产品实体:

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

回答

0

恐怕这是一个错误。感谢您提问:现在我们知道了,我们可以解决它。这个bug的票据是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; 

如果你需要这个字段用于其他目的,你可以创建第二个领域,并就第二场施加刻面:

@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