Java Hibernate FullTextQuery,没有搜索词吗?
我正在重写一个Hibernate/lucene函数,findRangeSorting(),它根据权限过滤器检索表中的所有记录。现在,手工将HQL(HibernateSQL)字符串拼接在一起,并使用它们来查询数据库,这样做(非常糟糕) 我还有一个搜索函数,它使用更好的编程方法,使用hibernate注释为类创建过滤器,并将布尔查询组合到全文查询中,然后根据用户进行搜索的情况将过滤器添加到全文查询中。 (请注意,这不是全部功能)Java Hibernate FullTextQuery,没有搜索词吗?,java,hibernate,filter,lucene,hibernate-search,Java,Hibernate,Filter,Lucene,Hibernate Search,我正在重写一个Hibernate/lucene函数,findRangeSorting(),它根据权限过滤器检索表中的所有记录。现在,手工将HQL(HibernateSQL)字符串拼接在一起,并使用它们来查询数据库,这样做(非常糟糕) 我还有一个搜索函数,它使用更好的编程方法,使用hibernate注释为类创建过滤器,并将布尔查询组合到全文查询中,然后根据用户进行搜索的情况将过滤器添加到全文查询中。 (请注意,这不是全部功能) fullTextQuery=fullTextSession.creat
fullTextQuery=fullTextSession.createFullTextQuery(bq,this.type);
结果=tab.getQueryFiltersForSearch(fullTextQuery).setSort(sort).list()代码>
我想将此功能用于findRangeSorting()函数,因为过滤器已经就位,所以我基本上只需要让搜索返回所有内容。缺点是搜索“”和*无法完成此任务,因此我需要基本上创建一个FullTextQuery,而不必搜索实际的术语,或者可能找到另一种方法,使用基于用户权限的过滤器从表中检索一系列行
我对hibernate没有最好的理解,所以我的假设可能是完全错误的。感谢您的帮助 要创建一个与所有文档匹配的查询,您应该能够使用Lucene的。我不知道HibernateQueryBuilder
中有什么东西可以创建一个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();