2013-10-16 74 views
2

我在我的Spring MVC项目中使用hibernate-search,我想完成一些操作,但我不确定是否有可能。这里的问题是:Hibernate搜索 - '%like%'类型查询

我使用NGramFilterFactoryClass对于这一点,并配置minGramSize = 3maxGramSize = 3

比方说,我的搜索词是 “关键字

如果我输入这样的事:

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

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

"bkey", "blablaordblabla" 

我不想回到“关键字”。 “关键字”应该只有当搜索词是一样的东西被退回:

"key", "ord", "ywo", "eywo", "word" etc... 

所以,我想我在寻找一个“%喜欢%”类型的查询。我如何用hinernate-search来完成这项工作?

回答

1

如果你用NGrams分析你的输入,你将无法执行精确的“Like%”查询。 您可能需要一个SimpleAnalyzer或类似的东西,它不会将您的关键字完全分成较小的片断,或者您可能想要跳过此字段的分析并按原样将其编入索引。

然后,将其与WildCard查询结合使用;请注意0​​如何使用关键字元素来构建查询,该查询固有地禁用输入上的分析器。 (请确保您向下滚动文档中的通配符查询部分)。

我假设你使用的是NGrams,因为你需要它们作为另一个用例。请记住,您可以使用@Fields注释以各种不同的方式对相同的属性进行索引,因此您可以使用ngrams将其索引为另外一种更适合通配符查询的形式。