我正在使用 Hibernate Search DSL 进行查询,我需要用法语搜索一些关键字。
例如,当我使用此查询时:
Query query = queryBuilder.keyword().onField("normVal").matching("asthme").createQuery();
它只匹配字段“normVal”上的单词 asthme,但我希望查询也可以找到单词“l'asthme”或“d'asthme”。
有人知道我如何在 Hibernate Search 中执行此操作吗?????????
最佳答案
您可以对字符串中的通配符使用匹配
方法:?
表示单个字符,*
表示任何字符序列
例如,您的代码可能是:
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
查询运算符
关于java - 如何在 Hibernate Search 中使用定冠词搜索关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22956942/