Solr:查询其日期范围包含用户输入的文档

时间:2014-08-11 14:53:01

标签: date solr lucene

我想存储和查询包含来自最新范围的文档,其中范围表示文档有效时的间隔。

lucene / solr文档中的典型用例解决了相反的问题:查询包含单个时间戳的文档,此时间戳包含在作为查询参数提供的日期范围内。 (createdate:[1976-03-06T23:59:59.999Z TO *])

我想使用edismax解析器。

我找到了ms()函数,在我看来,它仅用于提升分数,而不是完全消除不匹配的结果。

我找到了文章Spatial Search Tricks for People Who Don't Have Spatial Data,其中我所描述的问题据说很容易......(1977年5月25日找人活着)。

有没有更简单的方法来表达类似

的内容

date_from_query:[valid_from_field TO valid_to_field]比使用空间方法?

1 个答案:

答案 0 :(得分:1)

最直接的方法是自己创建边界:

valid_from_field:[* TO date_from_query] AND valid_to_field:[date_from_query TO *]

..这会为您提供valid_from_field早于您查询日期的文档,valid_to_field晚于您查询的日期,实际上,提取valid_from_fieldvalid_to_field之间的间隔。这假设两个字段都不是多值的。

我可能会将其添加为过滤查询,因为您不需要从中获取任何评分,并且您可能希望同时允许其他搜索查询。