我正在尝试使用聚合两个字段的自定义字段桥来查询字段。典型值如下所示:
myField:12345%FIELDSEPERATOR%4
这是12345和4的组合。它被正确编入索引,但是使用hibernate搜索查询API,如何禁用分析器?
FullTextEntityManager em = getFTEM();
SearchFactory searchFactory = em.getSearchFactory();
QueryBuilder qb = searchFactory.buildQueryBuilder().forEntity(User.class).get();
Query q = qb.phrase()
.onField("myField")
.ignoreAnalyzer()
.sentence("12345%SEPERATOR%4")
.createQuery();
q这里被解析为myField:"12345 seperator 4"
,即使我指定了ignoreAnalyzer,也会破坏搜索。为了进行比较,以下内容生成一个有效的查询
TermQuery tq = new TermQuery(new Term("myField", "12345%SEPERATOR%4"));
结果查询:myField:"12345%SEPERATOR%4"
我知道我可以简单地使用TermQuery,但我想享受Hibernate搜索的其他简单功能,例如.boostedTo()。
使用内部使用Lucene 3.1的Hibernate Search 3.4.2
答案 0 :(得分:2)
问题是您要定义词组查询,您应该使用关键字
Query q = qb.keyword()
.onField( "myField" )
.matching( "12345%SEPERATOR%4" )
.createQuery();