我正在为我的用户存储可用性时间,他们为每周的每一天输入他们可用的时间
例如 - X先生可以在
上找到在solr
中索引和搜索此数据的最佳方式是什么?用于搜索此类数据集的数据库查询将类似于
select * from schedule inner join days on schedule.day_id = days.id
where days.name = 'Sunday' and schedule.start>=5 and schedule.end>=8
答案 0 :(得分:0)
使用the DateRangeField
which became available in Solr5。这允许您查询包含与查询时间匹配的范围的文档。
fq={!field f=dateRange op=Contains}[2013 TO 2018]
在Solr 5之前,Solr中有a neat hack that uses the spatial support来查询重叠持续时间(如果此点包含在预期时间区域内等)。
根据所需的分辨率,您还可以索引七个不同的字段(星期一 - 星期日),然后为该人员可用的每小时索引一个整数。然后,您可以使用常规查询(例如available_sunday:15
)查询该字段,以查找匹配的人员。