小编IS0*_*S04的帖子

通过Elasticsearch/Tire的时间表查找开放式商店

我有模型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(轮胎)我可以找到开放的商店?

所有的想法都会被贬低!谢谢!


找到解决方案

  1. 为每一天创建单独的索引(星期日,星期一,...)

  2. 从每一天构建完整的分钟数Timetable:

    ((open_hour * 60 + open_minute)..(close_hour * 60 + close_minute)).to_a
    
    Run Code Online (Sandbox Code Playgroud)
  3. 添加过滤器进行搜索:

    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)

ruby-on-rails elasticsearch tire

6
推荐指数
1
解决办法
876
查看次数

标签 统计

elasticsearch ×1

ruby-on-rails ×1

tire ×1