Hibernate 搜索:如何使用包含字符进行搜索

Hibernate search: How can I search with contain character

在数据库中我有以下 4 个字符串:user、user1、user2、user4。 当我用 string is user 搜索时,我只会得到 user 的值,我怎样才能得到数据库中的所有值?

如果您想在查询时间解决问题,您可以使用“通配符”创建查询对象并搜索"user*" 得到所有结果。跟随一个例子:

Query q = yourQueryBuilderInstance.keyword().wildcard().onField("yourField")
        .matching("user*").createQuery();

这取决于你想做什么。

  1. 如果两个不同值之间的差异只是名称后面的数字('user1' 和 'user2'),则可以使用 LowerCaseTokenizerFactory 来删除非字母,因此 'user1'、'user2' 和 'user4' 将被编入索引 'user'。

  2. 您可以使用 EdgeNGramFilterFactory 从要索引的字段创建 n-gram,因此 'user4' 将被索引:'u'、'us', 'use', 'user', 'user4'。在这种情况下,当您的关键字是 'user'、'us'、'use' 时,您会找到 'user'、user1'、'user2' 和 'user4'或 'user'。

  3. 如@srs 所述,您可以使用通配符查询。