1

我对 Solr 比较陌生,需要帮助来确定它是否是适合我的任务的工具(如果是,应该如何使用)。

我有一个用例,其中一些实体具有多种资源类型,用户需要找到具有足够免费资源的实体。为了不那么抽象,假设有几家汽车租赁公司和几种汽车类型(SUV、面包车、卡车......);我们跟踪每个公司/汽车类型/天组合的可用汽车数量。用户想要在给定的时间跨度内租用一定数量的汽车,我们需要找出哪些公司可以满足该请求。

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


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

  • 公司就是文件
  • 每天/汽车类型组合是一个动态字段,其中包含给定类型的免费汽车数量,在该公司的给定日期
  • 然后条件将是一个巨大的布尔表达式,由诸如field_<car_type>_<day>:[<required_number> TO *]

我不确定有几个原因:

  • 它需要数千个字段——这会导致性能问题吗?
  • 据我了解,Solr 将范围查询解压缩为许多相等性检查 OR-ed 在一起,因此查询最终将有数千个术语 - 再次,这会导致性能问题吗?
  • 每次用户进行预订时,字段值都会改变 - 据我所知,这将强制重新索引,这很慢,所以与上面的问题相同。

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

4

1 回答 1

2

您的问题似乎与酒店业和购物业面临的问题相似。您可能会发现Gilt 的演示很有帮助。

基本观点似乎是您可能需要重新定义您的文档,使其比您最初的想法更细粒度。在您的情况下,这可能会将可用性索引为 Solr文档,并为每个可用性槽复制附加信息或使用Solr 连接运算符。

于 2013-03-18T14:17:02.193 回答