2013-03-18 57 views
1

我对Solr比较新,需要帮助来决定它是否是我的任务的正确工具(如果是,应该如何使用它)。Solr是否可以(或明智)用于预订系统?

我有一个用例,其中有一些实体具有多种资源类型,并且用户需要找到具有足够可用资源的实体。为了让它不那么抽象,可以说有几家汽车租赁公司,以及几种汽车类型(SUV,微型客车,卡车......);我们追踪每个公司/车型/每日组合的可用车辆数量。用户想要租用一定数量的汽车,并且我们需要找出哪些公司可以满足这一要求。

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


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

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

我不确定它有以下几个原因:

  • 它需要成千上万的领域 - 这可能会导致性能问题?
  • 据我所知,Solr将范围查询拆分为多个相等检查或一起进行编辑,因此查询最终会产生数千个术语 - 这又可能导致性能问题?
  • 每次用户进行预订时,字段值都会发生变化 - 据我所知,这会强制重新索引,这很慢,与上述问题相同。

我希望如何处理这个问题(例如,一些其他搜索工具来使用,或如何Solr的可能与做了预约检查一些自定义代码交互)的任何指针。

+0

难道你不能在大部分工作中使用良好的旧SQL,并且对Solr索引进行了微调以进行搜索,可以将字段合并在一起,等等。您应该能够使用http://docs.lucidworks从SQL导入数据。com/display/solr /上传+ Structured + Data + Store + Data + with + the + Data + Import + Handler – rcomblen 2013-03-18 09:51:09

+0

@rcomblen我可以使用SQL来检查可用性,但我宁愿不对每个搜索请求运行复杂的SQL查询。我没有看到的是如何将其与Solr集成。我需要运行SQL查询来获取具有足够资源的公司列表,然后将该列表提供给Solr(我不知道如何执行此操作),或先运行Solr搜索,然后筛选出不可用使用SQL的汽车(这会搅乱Solr数据,如分页和面数)。乍一看,您的链接似乎是从SQL导入文档,而不是导入每个查询过滤器的结果。 – Tgr 2013-03-18 10:49:49

+0

一个类似的问题:[SOLR旅游网站:日期查询](http://stackoverflow.com/questions/9118177/solr-travel-site-on-date-queries) – Tgr 2013-03-19 15:30:01

回答

2

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

基本情绪似乎是,您可能需要重新定义您的文档是比您的原始想法更细粒度的东西。在你的情况下,这可能索引可用性作为Solr 文档,其中附加信息要么为每个可用性插槽复制,要么使用Solr join运算符。

+0

谢谢!这些幻灯片非常有趣,并且使用每个公司/日/类型三元组作为文档似乎是一个好主意。我没有得到有关Gilt展示的内容,但它们是如何考虑可用性的。幻灯片只是说他们有一个自定义过滤器(我假设这意味着一个用Java编写的Solr插件),它与库存服务联系。这是否意味着对搜索的每个结果调用外部服务? (示例代码似乎暗示了这一点)。这听起来非常昂贵。 – Tgr 2013-03-19 15:10:33

+0

连接运算符也很有趣,但如果我理解正确,它意味着您可以过滤共享数据(这是公司的一个字段,而不是公司/类型/日),但您只能获取子数据(例如,您可以在位于芝加哥的公司展示可用汽车的结果列表,但无法显示该公司所在的每个结果项目)。这不会影响整个事情吗? – Tgr 2013-03-19 15:14:47

+0

加入运营商是一个早期阶段的事情,可能并不完美。有一些关于父母/孩子索引的工作。请检查solr用户邮件列表以进行多重讨论。 如果做得对,自定义过滤器不必非常昂贵。您可以缓存一小段时间,配置服务等。Solr为您提供生命周期挂钩,可能有所帮助。此外,您可能能够通过针对该演示文稿的非常具体的问题联系Gilt人员。不知何故,它适用于他们(流量非常高),所以一定有办法。 – 2013-03-19 16:56:23