我有模型Shop每个都有关系Timetable,可能包含如下内容:
shop_id: 1, day: 5, open_hour: 7, open_minutes: 0, close_hour: 13, close_minute: 30
shop_id: 1, day: 5, open_hour: 14, open_minutes: 30, close_hour: 18, close_minute: 00
Run Code Online (Sandbox Code Playgroud)
当然Timetable可以有更优雅的格式,但问题是下一个:如何使用elasticsearch(轮胎)我可以找到开放的商店?
所有的想法都会被贬低!谢谢!
找到解决方案
为每一天创建单独的索引(星期日,星期一,...)
从每一天构建完整的分钟数Timetable:
((open_hour * 60 + open_minute)..(close_hour * 60 + close_minute)).to_a
Run Code Online (Sandbox Code Playgroud)添加过滤器进行搜索:
filter :term, current_day_name => (current_hour * 60 + current_minutes)
Run Code Online (Sandbox Code Playgroud)这个解决方案也可以,但它看起来很麻烦,因为如果Shop每天工作8小时我创建了大小的数组:( 8 * 60 = 480它被转换为字符串作为索引字段),这就是为什么这个问题仍然是开放的,也许是某人会找到更好的解决方案
@Andrei Stefan的轮胎部分回答:
indexes :open_hours, type: :nested do
indexes :open, type: 'integer'
indexes :close, type: …Run Code Online (Sandbox Code Playgroud)