我正在开发一个类似于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来复制这个功能,但是找不到任何关于类似功能的文档。实际上,我现在面临着两个单独的问题:
1. 我无法确保所提供的日期范围内的所有日期都可用,因为Algolia几乎没有关于关联的知识。 2. 我无法计算(和查询)所提供日期范围的平均价格,因为它取决于用户输入(即日期范围)。
有没有办法在Algolia中实现这一点?如果没有,是否可以使用SQL或其他工具与Algolia相结合以实现所需的结果?当然,我可以通过Elasticsearch做所有这些事情,但Algolia如此快速和简便,以至于我不想因为这些问题而离开Algolia。