匹配 Hibernate Search 查询中非字符串字段的空值
Match null of non-string field in Hibernate Search query
我正在尝试针对以下逻辑执行查询:
Match results where endDate is above now OR endDate is not present (i.e. null)
到目前为止,我能够完成第一部分如下:
dateQuery = queryBuilder.range()
.onField("endDate")
.above(LocalDateTime.now())
.createQuery();
不幸的是,我无法理解第二部分。我试过这个(但失败了):
queryBuilder.bool()
.must(dateQuery)
.should(queryBuilder.keyword().onField("endDate")
.matching("").createQuery())
.createQuery();
在 Hibernate Search 中是否有任何优雅的方法来检查非字符串字段是否为 Null?
默认情况下不为 null 值编制索引,Lucene 无法有效地查找不在索引中的内容。
您应该在映射中使用 @Field(indexNullAs = "...")
。在您的情况下,您应该将 indexNullAs
设置为类似 9999-12-31T23:59:59.999
的值(9999 年最后一天的最后毫秒)。
有关详细信息,请参阅 the documentation about Field.indexNullAs。
我正在尝试针对以下逻辑执行查询:
Match results where endDate is above now OR endDate is not present (i.e. null)
到目前为止,我能够完成第一部分如下:
dateQuery = queryBuilder.range()
.onField("endDate")
.above(LocalDateTime.now())
.createQuery();
不幸的是,我无法理解第二部分。我试过这个(但失败了):
queryBuilder.bool()
.must(dateQuery)
.should(queryBuilder.keyword().onField("endDate")
.matching("").createQuery())
.createQuery();
在 Hibernate Search 中是否有任何优雅的方法来检查非字符串字段是否为 Null?
默认情况下不为 null 值编制索引,Lucene 无法有效地查找不在索引中的内容。
您应该在映射中使用 @Field(indexNullAs = "...")
。在您的情况下,您应该将 indexNullAs
设置为类似 9999-12-31T23:59:59.999
的值(9999 年最后一天的最后毫秒)。
有关详细信息,请参阅 the documentation about Field.indexNullAs。