Hibernate搜索 - '%like%'类型查询

时间:2013-10-16 12:09:01

标签: java spring hibernate spring-mvc hibernate-search

我在我的Spring MVC项目中使用hibernate-search,我想完成一些事情,但我不确定它是否可行。这是问题所在:

我正在使用 NGramFilterFactoryClass 并已配置 minGramSize = 3 maxGramSize = 3

假设我的搜索字词为“关键字

如果我输入这样的内容:

"ywo", "key", "ord", "blablaordblabla"

查询将返回“关键字”。这很好,我理解这是如何工作的,但我想做的是当我输入类似的东西:

"bkey", "blablaordblabla"

我不想返回“关键字”。只有当搜索字词类似于:

时,才应返回“关键字”
"key", "ord", "ywo", "eywo", "word" etc...

所以,我想我正在寻找'%like%'类型的查询。如何使用hinernate-search实现此目的?

2 个答案:

答案 0 :(得分:1)

我不知道你是否正在寻找,但也许你需要所谓的“通配符查询”。

尝试查看this link作为参考。 另请查看this stackoverflow topic

答案 1 :(得分:1)

如果您使用NGrams分析您的输入,您将无法执行完全“赞%”查询。 您可能需要一个 SimpleAnalyzer 或类似的东西,它不能完全破坏您的关键字,或者您可能希望跳过此字段的分析并按原样对其进行索引。

然后将其与WildCard查询结合使用;请注意example in the reference docs如何使用关键字元素来构建查询,该查询本身会在输入上禁用分析器。 (确保向下滚动文档中的通配符查询部分。)

我假设您正在使用NGrams,因为您需要它们用于其他用例。请记住,您可以使用@Fields批注以各种不同的方式索引相同的属性,因此您可以使用ngrams索引它,也可以使用另一种更适合通配符查询的形式。