gpt4 book ai didi

java - Hibernate FullTextQuery,没有搜索词?

转载 作者:行者123 更新时间:2023-11-30 04:10:18 26 4
gpt4 key购买 nike

我正在重写一个 Hibernate/lucene 函数 findRangeSorting(),它根据权限过滤器检索表中的所有记录。现在,这是通过将 HQL(hibernate sql)字符串拼接在一起并使用它来查询数据库来手动完成的(非常糟糕)。

我还有一个搜索功能,它使用更好的编程方法,通过使用 hibernate 注释为类创建过滤器,并将 boolean 查询组合到全文查询中,然后根据执行搜索的用户将过滤器添加到其中。(注意这不是整个函数)

fullTextQuery = fullTextSession.createFullTextQuery(bq, this.type);
结果 = tab.getQueryFiltersForSearch(fullTextQuery).setSort(sort).list();

我想将此功能用于 findRangeSorting() 函数,因为过滤器已经就位,所以我基本上只需要让搜索返回所有内容。缺点是搜索“”和*无法实现此目的,因此我基本上需要创建一个FullTextQuery,而不必搜索实际术语,或者可能找到替代方法用于使用基于用户权限的过滤器从表中检索一系列行

我对 hibernate 没有最好的掌握,所以我的假设可能完全错误。任何帮助表示赞赏。

最佳答案

要创建匹配所有文档的查询,您应该能够使用 Lucene 的 MatchAllDocsQuery 。我不知道 Hibernate QueryBuilder 中创建 MatchAllDocsQuery 的任何内容,但直接通过 Lucene API 创建一个就足够简单了,例如:

org.apache.lucene.search.Query allQuery = new org.apache.lucene.search.MatchAllDocsQuery();
fullTextQuery = fullTextSession.createFullTextQuery(allQuery, this.type);
results = tab.getQueryFiltersForSearch(fullTextQuery).setSort(sort).list();

关于java - Hibernate FullTextQuery,没有搜索词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19769610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com