2

我在我的 Spring MVC 项目中使用休眠搜索,我想完成一些事情,但我不确定它是否可能。这是问题所在:

我为此使用NGramFilterFactoryClass并配置了 minGramSize=3maxGramSize=3

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

如果我输入这样的内容:

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

查询将返回“关键字”。这很好,我理解它是如何工作的,但我想做的是当我输入如下内容时:

"bkey", "blablaordblabla"

我不想返回“关键字”。仅当搜索词类似于以下内容时才应返回“关键字”:

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

所以,我想我正在寻找一个 '%like%' 类型的查询。如何使用 hinernate-search 完成此操作?

4

2 回答 2

1

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

然后将其与通配符查询结合使用;请注意参考文档中的示例如何 使用关键字元素来构建查询,这本质上会禁用输入分析器。(确保向下滚动文档中的通配符查询部分)。

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

于 2013-10-17T17:36:52.257 回答
1

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

尝试查看此链接作为参考。也看看这个stackoverflow主题

于 2013-10-16T13:56:18.953 回答