【发布时间】:2017-02-09 13:57:30
【问题描述】:
我正在开发一个类似 Airbnb 的网站,并且正在使用 Algolia 重写我们内部的、基于 SQL 的搜索系统。到目前为止,这是一段非常愉快的旅程,因为我已经设法删除了许多遗留代码并将其外包,结果非常棒。但是,我们的搜索系统有一个关键部分我不确定是否可以使用 Algolia 实现。
在内部,我们将每个资产的每个日期的可用性/不可用性(和价格)存储为数据库中的一行。这意味着我们的availabilities 表如下所示:
asset_id | date | status | price_cents
-------- | ---------- | ----------- | -----------
1 | 2017-02-09 | available | 15000
1 | 2017-02-10 | available | 15000
1 | 2017-02-11 | unavailable | NULL
1 | 2017-02-12 | available | 20000
当用户搜索可用属性时,他们会输入一个日期范围,并且可以选择输入一个价格范围。
我们现在所做的只是查询availabilities 表并确保日期范围内的所有日期都可用于该资产(即可用日期的计数等于该范围内的天数) .如果用户输入价格范围,我们还会确保这些日期的平均价格在请求的范围内。 SQL 查询相当复杂,但这就是它在一天结束时所做的。
我一直在尝试使用 Algolia 复制此功能,但找不到任何有关类似功能的文档。事实上,我现在面临两个不同的问题:
- 我无法确保提供的日期范围内的所有日期都可用,因为 Algolia 对关联几乎一无所知,并且
- 我无法计算(和查询)所提供日期范围的平均价格,因为它取决于用户输入(即日期范围)。
有没有办法通过 Algolia 实现这一目标?如果没有,是否可以使用 SQL 或其他工具与 Algolia 结合来达到预期的效果?当然,我可以使用 Elasticsearch 完成所有这些工作,但 Algolia 又快又简单,我不想因为这些问题而放弃它。
【问题讨论】: