Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lucene Hibernate搜索忽略查询中的分析器_Lucene_Hibernate Search - Fatal编程技术网

Lucene Hibernate搜索忽略查询中的分析器

Lucene Hibernate搜索忽略查询中的分析器,lucene,hibernate-search,Lucene,Hibernate Search,我正在尝试使用聚合两个字段的自定义字段桥查询字段。典型值如下所示: myField:12345%FIELDSEPERATOR%4 这是12345和4的组合。它的索引正确,但使用hibernate搜索查询API,如何禁用分析器 FullTextEntityManager em = getFTEM(); SearchFactory searchFactory = em.getSearchFactory(); QueryBuilder qb = searchFactory.buildQueryBui

我正在尝试使用聚合两个字段的自定义字段桥查询字段。典型值如下所示:

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分隔符4”
,它中断了搜索,即使我指定了ignoreAnalyzer。为了进行比较,下面生成一个工作查询

TermQuery tq = new TermQuery(new Term("myField", "12345%SEPERATOR%4"));
结果查询:
myField:“12345%分隔符%4”

我知道我可以简单地使用TermQuery,但我想享受Hibernate搜索的其他简单功能,如.boostedTo()


使用内部使用Lucene 3.1的Hibernate Search 3.4.2

问题是您要定义一个短语查询,您应该使用关键字


啊,我使用短语查询,因为我看到示例将字段组合在一个字符串中,表示需要短语查询。谢谢介绍了新的问题,但。。。将短语替换为关键字会导致org.hibernate.search.SearchException:在com.my.app.User中找不到字段myField,即使最确定的字段是这样的。有什么想法吗?@RasmusFranke我想你可能需要发布一个新的问题,在那里你可以显示com.my.app.User的相关部分,以得到一个合适的答案。很公平,虽然我现在可能会使用纯lucene api,因为它很简单,如果你使用的是在类桥中创建的字段,Hibernate Search不会知道。在这种情况下,您应该使用ignoreFieldBridge来防止异常
Query q = qb.keyword()
    .onField( "myField" )
    .matching( "12345%SEPERATOR%4" )
    .createQuery();