java - Hibernate 搜索带破折号的字符串的精确匹配

标签 java hibernate hibernate-search

我想精确搜索格式为“xx-xx-xx”的实体字段。

实体如下所示:

@Entity
@Indexed
class Resource {

    @Field
    private String address; // has "xx-xx-xx" format
}

查询创建过程如下: queryBuilder.keyword().onFields("resource").matching(searchQuery).createQuery()

假设我有两个资源,地址如下:

aa-bb-cc
cc-dd-ee

当我运行搜索查询 "aa-bb-cc" 时,我希望只返回第一个资源,但相反,我让搜索返回了两个资源。

我应该如何更改以按资源字段进行精确搜索?

最佳答案

您需要禁用此字段的默认分析器,以便将其视为“精确”关键字:

@Entity
@Indexed
class Resource {

    @Field(analyze=Analyze.NO)
    private String address; // has "xx-xx-xx" format
}

关于java - Hibernate 搜索带破折号的字符串的精确匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47509548/

相关文章:

java - Double不是抽象的,并且不会重写ListInterface中的抽象方法getNext()吗?

java - 15个java益智游戏

java - 如何将 List<Object[]> 设置为 HQL 参数?

java - 删除 OneToMany 关系中的实体

java - 使用 BIRT 将 pdf 报告保存到数据库中

java - Hibernate Search 中 LocalDate 的 DateBridge

java - 在旧的谷歌浏览器 gwt 表单设计中正确显示。但不支持 chrome 新版本 65.0.3325.162

java - Arrays.BinarySearch 是否要求数组按升序排序

hibernate-search - 休眠搜索,查询关联

elasticsearch - 如何在休眠 Elasticsearch 中组合多个QueryDescriptor