Luc*_*uke 5 java lucene hibernate java-ee hibernate-search
我试图在Hibernate Search中理解一般的查询.我在理解forEntity(...)方法时遇到了一些麻烦.这是文档说的:
我们来看看如何使用API.首先需要创建附加到给定索引实体类型的查询构建器.此QueryBuilder将知道要使用的分析器和要应用的字段桥.您可以创建多个QueryBuilder(一个用于查询根目录中涉及的每个实体类型).您从SearchFactory获取QueryBuilder.
从部分:5.1.2.使用Hibernate Search查询DSL构建Lucene查询
QueryBuilder mythQB = searchFactory.buildQueryBuilder().forEntity( Myth.class ).get();
Run Code Online (Sandbox Code Playgroud)
从上面你可以看到你必须命名一个实体.当您想要创建自己的查询构建器以在"根"查询中创建布尔查询时,您应该怎么做?你应该怎么绑?
假设我想要一个应该匹配"Apples"或"Pie"的布尔查询.这是两个不同的实体,所以目前我有两个不同的查询构建器.但我需要第三个来创建一个布尔查询.这应该是Object课吗?
如果您希望能够从单个查询返回多个实体,您可以QueryBuilder按照您的说明使用,但您需要在createFullTextQuery调用中指定多个实体。例如,如果您有一个Book实体和一个Movie实体,并且您想要查找标题以 开头的所有书籍和电影d,则可以使用以下查询:
QueryBuilder queryBuilder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Book.class).get();
Query query = queryBuilder.keyword().wildcard().onField("title").matching("d*").createQuery();
org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery(query, Book.class, Movie.class);
Run Code Online (Sandbox Code Playgroud)
请注意,查询生成器仅使用实体创建Book,但Books 和Movies 均在调用中指定createFullTextQuery。
| 归档时间: |
|
| 查看次数: |
1955 次 |
| 最近记录: |