我使用Hibernate Search DSL进行查询,我需要用法语搜索一些关键字。
例如,当我使用此查询时:
Query query = queryBuilder.keyword().onField("normVal").matching("asthme").createQuery();
它只匹配字段" normVal"上的单词asthme,但我希望查询可以找到单词" l' asthme"或者" d' asthme"太
有人知道如何在Hibernate Search中做到这一点?????????
答案 0 :(得分:1)
您可以在字符串中使用带有通配符的matching
方法:?
表示单个字符,*
表示任何字符序列
因此,您的代码可能是:
Query query = queryBuilder.keyword().onField("normVal").matching("*asthme*").createQuery();
您可以找到更多详情here
OP评论后编辑
如果你有固定的搜索值,比如带文章的单词,你也可以尝试这样的东西而不是野猫:
Query query = queryBuilder.bool()
.should(queryBuilder.keyword().onField("normVal").matching("l'asthme").createQuery())
.should(queryBuilder.keyword().onField("normVal").matching("d'asthme").createQuery())
.should(queryBuilder.keyword().onField("normVal").matching("asthme").createQuery())
.createQuery();
请注意,should
方法将像OR
查询运算符一样工作