是否可以(或明智地)将Solr用于预订系统?

时间:2013-03-18 09:35:19

标签: solr

我对Solr相对较新,需要帮助来确定它是否是正确的工具(如果是,应该如何使用它)。

我有一个用例,其中有一些实体具有多种资源类型,用户需要找到具有足够可用资源的实体。为了减少抽象,我们可以说有几家汽车租赁公司和几种汽车类型(SUV,微型客车,卡车......);我们跟踪每个公司/汽车类型/天组合可用的汽车数量。用户希望在给定的时间跨度内租用一些汽车,我们需要找出哪些公司可以满足该要求。

搜索的其他方面,Solr似乎是一个很好的匹配(每个实体都有许多属性,认为公司位置,价格,绿色租赁政策的存在等,以及需要搜索的那些,带有范围过滤器和分面搜索,并根据用户反馈分数排序),所以如果资源分配方面可以被塞进Solr将是很好的。那可能吗?出于某种原因,这是一个坏主意吗?你能推荐一款更适合这项任务的工具吗?


浏览完Solr文档后,我想出了这个方案:

  • 公司是文件
  • 每天/车型组合是一个动态字段,在该公司的指定日期保存给定类型的免费车辆数量
  • 条件将是一个巨大的布尔表达式,由field_<car_type>_<day>:[<required_number> TO *]
  • 等术语组成

我不确定它有几个原因:

  • 它需要数千个字段 - 是否会导致性能问题?
  • 根据我的理解,Solr将范围查询解压缩到一起进行大量的等式检查,因此查询最终会产生数千个术语 - 这又会导致性能问题吗?
  • 每次用户进行预订时,字段值都会发生变化 - 据我了解,这会强制重新编制索引,这很慢,与上述问题完全相同。

我很感激有关如何处理此问题的任何指示(例如,使用其他一些搜索工具,或者Solr如何与执行预留检查的某些自定义代码进行交互)。

1 个答案:

答案 0 :(得分:2)

您的问题似乎与酒店业和购物业面临的问题类似。您可能会发现the presentation from Gilt有帮助。

基本情绪似乎是您可能需要重新定义文档,使其比原始想法更精细。在您的情况下,这可能会将可用性编入索引作为Solr 文档,并为每个可用性槽或使用Solr join运算符复制其他信息。