使用日期从Compass Lucene查询中清空结果集

时间:2012-08-02 11:59:57

标签: java lucene indexing search-engine compass-lucene

我正在使用Compass对内存数据结构中的数据进行查询。它适用于搜索字符串和枚举值,现在我想搜索日期。

搜索条件由@SearchRestriction注释注释。关于so​​meDate的例子:

    @SearchRestriction(path="fooBar.someDate" type = SearchRestrictionType.EQUAL)
    String someDate;

在可搜索的数据中,SomeDate的注释如下:

    @SearchableProperty
    Date someDate;
可搜索数据中的

SomeDate使用new Date();生成,查询字符串为20120802

调试器的情况: 此代码生成如下查询:

    someDate:20120802

此处someDate是我要查找的字段的名称,20120802是yyyyMMdd的日期。

问题: 运行此查询时,不返回任何结果。我得到一个空列表。查询中的日期与Date对象中的日期相同。

有什么问题? 用Compass搜索Date这是错误的方法吗?我只能找到关于日期的范围查询,但搜索的确切日期或我找不到的确切日期的一部分。

1 个答案:

答案 0 :(得分:2)

您需要指定可搜索属性[日期]

的格式
@SearchableProperty(format = "yyyyMMdd")

在某种程度上,它与Grails: Lucene, Compass Query Builder and date ranges

有关