我对 Solr 比较陌生,需要帮助来确定它是否是适合我的任务的工具(如果是,应该如何使用)。
我有一个用例,其中一些实体具有多种资源类型,用户需要找到具有足够免费资源的实体。为了不那么抽象,假设有几家汽车租赁公司和几种汽车类型(SUV、面包车、卡车......);我们跟踪每个公司/汽车类型/天组合的可用汽车数量。用户想要在给定的时间跨度内租用一定数量的汽车,我们需要找出哪些公司可以满足该请求。
搜索的其他方面,Solr 似乎很匹配(每个实体都有许多属性,比如公司位置、价格、是否存在绿色租赁政策等,这些需要可搜索,使用范围过滤器和分面搜索,并根据用户反馈分数进行排序),因此如果资源分配方面可以硬塞到 Solr 中,那就太好了。那可能吗?出于某种原因,这是一个坏主意吗?您能否推荐一个更适合该任务的工具?
浏览 Solr 文档后,我想出了这个方案:
- 公司就是文件
- 每天/汽车类型组合是一个动态字段,其中包含给定类型的免费汽车数量,在该公司的给定日期
- 然后条件将是一个巨大的布尔表达式,由诸如
field_<car_type>_<day>:[<required_number> TO *]
我不确定有几个原因:
- 它需要数千个字段——这会导致性能问题吗?
- 据我了解,Solr 将范围查询解压缩为许多相等性检查 OR-ed 在一起,因此查询最终将有数千个术语 - 再次,这会导致性能问题吗?
- 每次用户进行预订时,字段值都会改变 - 据我所知,这将强制重新索引,这很慢,所以与上面的问题相同。
我将不胜感激有关如何处理此问题的任何指示(例如要使用的其他一些搜索工具,或者 Solr 如何与一些进行预订检查的自定义代码进行交互)。