我想存储和查询包含来自最新范围的文档,其中范围表示文档有效时的间隔。
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]比使用空间方法?
答案 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_field
和valid_to_field
之间的间隔。这假设两个字段都不是多值的。
我可能会将其添加为过滤查询,因为您不需要从中获取任何评分,并且您可能希望同时允许其他搜索查询。