如何使用 Hibernate-Search 索引和搜索 ENUM 类型

How to index and search an ENUM type with Hibernate-Search

我正在 Spring、Jpa、Hibernate-Search、Lucene 应用程序中工作。我想索引一个具有 ENUM 属性 的 JPA 实体,并使用 Lucene 对其进行搜索。我的 ENUM 中的每个元素都有一个 int 值。

我在 属性 上添加了 @Field 注释,但它不起作用。在数据库中,该字段存储为整数。

@Field
@Enumerated
private STATUS status = STATUS.FIRST;

现在我想使用 Lucene 来使用这个字段进行搜索

//lucene query to search by that enum field 
queryStatus.should(queryBuilder.keyword().onField("status").matching(1).createQuery());

我无法将枚举存储更改为字符串类型,因为它有其他查询在工作并将此枚举属性用作整数,我不知道如何索引和使用它。

实际上我能够解决这个问题,当搜索而不是使用 int 值时,我将它转换为显式枚举。

queryStatus.should(queryBuilder.keyword().onField("status").matching(MyClass.STATUS.fromValue(status)).createQuery());

这解决了我的问题。