【发布时间】:2013-03-18 09:35:19
【问题描述】:
我对 Solr 比较陌生,需要帮助来确定它是否是适合我的任务的工具(如果是,应该如何使用)。
我有一个用例,其中一些实体具有多种资源类型,用户需要找到具有足够免费资源的实体。为了不那么抽象,假设有几家汽车租赁公司和几种汽车类型(SUV、面包车、卡车......);我们跟踪每个公司/汽车类型/天组合的可用汽车数量。用户想要在给定的时间跨度内租用一定数量的汽车,我们需要找出哪些公司可以满足该请求。
搜索的其他方面,Solr 似乎很适合(每个实体都有许多属性,比如公司位置、价格、是否存在绿色租赁政策等,这些需要可搜索,并带有范围过滤器和分面搜索,并根据用户反馈分数进行排序),所以如果资源分配方面可以硬塞到 Solr 中会很好。那可能吗?出于某种原因,这是一个坏主意吗?你能推荐一个更适合这项任务的工具吗?
浏览 Solr 文档后,我想出了这个方案:
- 公司就是文件
- 每天/汽车类型组合是一个动态字段,其中包含该公司在给定日期的给定类型的免费汽车数量
- 然后条件将是一个巨大的布尔表达式,由诸如
field_<car_type>_<day>:[<required_number> TO *]之类的术语组成
我不确定有几个原因:
- 这将需要数千个字段 - 这会导致性能问题吗?
- 据我了解,Solr 将范围查询解压缩为许多相等性检查 OR-ed 在一起,因此查询最终会包含数千个术语 - 再次,这会导致性能问题吗?
- 每次用户进行预订时,字段值都会发生变化 - 据我了解,这将强制重新编制索引,这很慢,所以与上述问题相同。
我将不胜感激有关如何处理此问题的任何指示(例如,要使用的其他搜索工具,或者 Solr 如何与一些进行预订检查的自定义代码进行交互)。
【问题讨论】:
-
难道你不能在你的大部分工作中使用良好的旧 SQL,并为搜索微调 Solr 索引,你可以将字段合并在一起等等。您应该能够使用 docs.lucidworks.com/display/solr/… 将数据从 SQL 导入到 solr
-
@rcomblen 我可以使用 SQL 来检查可用性,但我不希望对每个搜索请求都运行复杂的 SQL 查询。我没有看到如何将它与 Solr 集成。我要么需要运行 SQL 查询以获取具有足够资源的公司列表,然后将该列表提供给 Solr(我不知道该怎么做),要么先运行 Solr 搜索,然后过滤掉不可用的带有 SQL 的汽车(这会弄乱 Solr 数据,如分页和构面计数)。乍一看,您的链接似乎是关于从 SQL 导入文档,而不是导入每个查询过滤器的结果。
标签: solr