Hibernate Search - 在查询上应用 facet 不会返回任何结果

软糖

我正在尝试使用返回的方面之一缩小原始查询的范围,但这似乎不起作用,即它没有返回任何结果。我第一次调用list()方法时,我得到 8 个产品(总共 15 个,这些受setMaxResults()方法限制)和两个方面的列表:一个计数为 14,另一个计数为 1。当我将第一个方面应用于当前查询并使用该list()方法重新执行查询,我期望看到总共 14 个产品,但返回的是一个空列表。我看不到我正在做的任何与文档不同的事情。

建筑查询:

Session session = entityManager.unwrap(Session.class);
        FullTextSession fullTextSession = org.hibernate.search.Search.getFullTextSession(session);

        QueryBuilder queryBuilder = fullTextSession.getSearchFactory().buildQueryBuilder()
                .forEntity(Product.class).get();

        Query luceneQuery = queryBuilder.all().createQuery();

        FacetingRequest categoryFacetingRequest = queryBuilder.facet()
                .name("categoryFaceting")
                .onField("productCategoryId")
                .discrete()
                .orderedBy(FacetSortOrder.COUNT_DESC)
                .includeZeroCounts(false)
                .createFacetingRequest();

        FullTextQuery hibernateQuery = fullTextSession.createFullTextQuery(luceneQuery, Product.class);

        hibernateQuery.setFirstResult(pageable.getOffset());
        hibernateQuery.setMaxResults(pageable.getPageSize());

        FacetManager facetManager = hibernateQuery.getFacetManager();
        facetManager.enableFaceting(categoryFacetingRequest);

        @SuppressWarnings("unchecked")
        List<Product> products = hibernateQuery.list();

        List<Facet> categoryFacets = facetManager.getFacets("categoryFaceting");

        FacetSelection facetSelection = facetManager.getFacetGroup("categoryFaceting");
        facetSelection.selectFacets(categoryFacets.get(0));
        products = hibernateQuery.list();

Product 实体上的 productCategoryId 字段:

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

恐怕这是一个错误。感谢您的提问:既然我们知道了,我们可以努力修复它。此错误的票证是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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Hibernate Search Facet在多个字段上

来自分类Dev

Hibernate Search Facet在多个字段上

来自分类Dev

Hibernate Search不返回任何结果

来自分类Dev

简单的SPARQL查询不会返回任何结果

来自分类Dev

Hibernate Search查询类

来自分类Dev

Hibernate Search查询类

来自分类Dev

ElasticSearch search_analyzer已应用,但未返回任何结果

来自分类Dev

Hibernate Search返回空结果列表

来自分类Dev

参数化的MySQL查询不会返回任何结果

来自分类Dev

Hibernate Search 空间构面查询先工作 5 次,然后只返回第 5 个结果

来自分类Dev

Solr Facet查询结果(带连字符)

来自分类Dev

带有“日期= YYYY-MM-DD”的GAE Search API查询不返回任何结果

来自分类Dev

Hibernate查询返回空结果列表

来自分类Dev

Hibernate返回结果是不同的直接查询

来自分类Dev

Hibernate查询返回空结果列表

来自分类Dev

查询Hibernate或HQL不返回结果

来自分类Dev

Hibernate Search 6中LocalDateTime的范围查询

来自分类Dev

Hibernate Search 中 BigDecimal 的范围查询

来自分类Dev

使用Nest字段提升查询量不会从Elasticsearch返回任何结果

来自分类Dev

MongoDB-通过元数据查询GridFS不会返回任何结果

来自分类Dev

Xpath查询不会返回结果

来自分类Dev

如果字符串中有“ =”,则Hibernate Search(Lucene)返回空结果

来自分类Dev

Hibernate返回错误的结果集并生成错误的查询

来自分类Dev

Hibernate返回错误的结果集并生成错误的查询

来自分类Dev

Hibernate Search 5.0数值Lucene查询HSEARCH000233问题

来自分类Dev

使用Hibernate Search查询枚举(枚举)的IndexedEmbedded列表

来自分类Dev

使用 Hibernate Search 时“过滤查询不支持排序”

来自分类Dev

对SearchFactory优化的Hibernate Search调用不会立即调用

来自分类Dev

插入后,Hibernate Search不会重新索引lucene索引

Related 相关文章

  1. 1

    Hibernate Search Facet在多个字段上

  2. 2

    Hibernate Search Facet在多个字段上

  3. 3

    Hibernate Search不返回任何结果

  4. 4

    简单的SPARQL查询不会返回任何结果

  5. 5

    Hibernate Search查询类

  6. 6

    Hibernate Search查询类

  7. 7

    ElasticSearch search_analyzer已应用,但未返回任何结果

  8. 8

    Hibernate Search返回空结果列表

  9. 9

    参数化的MySQL查询不会返回任何结果

  10. 10

    Hibernate Search 空间构面查询先工作 5 次,然后只返回第 5 个结果

  11. 11

    Solr Facet查询结果(带连字符)

  12. 12

    带有“日期= YYYY-MM-DD”的GAE Search API查询不返回任何结果

  13. 13

    Hibernate查询返回空结果列表

  14. 14

    Hibernate返回结果是不同的直接查询

  15. 15

    Hibernate查询返回空结果列表

  16. 16

    查询Hibernate或HQL不返回结果

  17. 17

    Hibernate Search 6中LocalDateTime的范围查询

  18. 18

    Hibernate Search 中 BigDecimal 的范围查询

  19. 19

    使用Nest字段提升查询量不会从Elasticsearch返回任何结果

  20. 20

    MongoDB-通过元数据查询GridFS不会返回任何结果

  21. 21

    Xpath查询不会返回结果

  22. 22

    如果字符串中有“ =”,则Hibernate Search(Lucene)返回空结果

  23. 23

    Hibernate返回错误的结果集并生成错误的查询

  24. 24

    Hibernate返回错误的结果集并生成错误的查询

  25. 25

    Hibernate Search 5.0数值Lucene查询HSEARCH000233问题

  26. 26

    使用Hibernate Search查询枚举(枚举)的IndexedEmbedded列表

  27. 27

    使用 Hibernate Search 时“过滤查询不支持排序”

  28. 28

    对SearchFactory优化的Hibernate Search调用不会立即调用

  29. 29

    插入后,Hibernate Search不会重新索引lucene索引

热门标签

归档