Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 基于Algolia的可用性跟踪_Search_Algolia - Fatal编程技术网

Search 基于Algolia的可用性跟踪

Search 基于Algolia的可用性跟踪,search,algolia,Search,Algolia,我正在一个类似Airbnb的网站上工作,我正在用Algolia重写我们内部基于SQL的搜索系统。到目前为止,这是一个非常愉快的旅程,因为我已经成功地删除了许多遗留代码并将其外包,并取得了非常好的效果。然而,我们的搜索系统有一个关键部分,我不确定是否可以用Algolia实现 在内部,我们将每个资产的每个日期的可用性/不可用性(和价格)存储为数据库中的一行。这意味着我们的可用性表如下所示: asset_id | date | status | price_cents -----

我正在一个类似Airbnb的网站上工作,我正在用Algolia重写我们内部基于SQL的搜索系统。到目前为止,这是一个非常愉快的旅程,因为我已经成功地删除了许多遗留代码并将其外包,并取得了非常好的效果。然而,我们的搜索系统有一个关键部分,我不确定是否可以用Algolia实现

在内部,我们将每个资产的每个日期的可用性/不可用性(和价格)存储为数据库中的一行。这意味着我们的
可用性
表如下所示:

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
当用户搜索可用属性时,他们会输入日期范围,还可以输入价格范围

我们现在所做的只是查询
可用性
表,并确保该日期范围内的所有日期都可用于该资产(即可用日期的计数等于该范围内的天数)。如果用户输入价格范围,我们也会确保这些日期的平均价格在请求的范围内。SQL查询相当复杂,但归根结底它就是这样做的

我一直试图用Algolia复制这个功能,但找不到任何关于类似功能的文档。事实上,我现在面临两个不同的问题:

  • 我无法确保提供的日期范围内的所有日期都可用,因为Algolia对关联几乎一无所知,而且
  • 我无法计算(和查询)所提供日期范围的平均价格,因为它取决于用户输入(即日期范围)

有没有办法用Algolia实现这一点?如果不是,使用SQL或其他工具与Algolia结合使用是否可行,以达到预期的结果?当然,我可以用Elasticsearch来完成所有这些,但是Algolia是如此的快速和简单,我不想因为这些问题而离开它。

这个用例确实很复杂,Algolia需要预先计算的数据才能工作


编辑2020(更好的解决方案)

在每个项目中,您只需存储位置可用的天数列表,例如

{
名称:“两居室公寓”,
地点:“巴黎”,
可用性:['2020-04-27','2020-04-28','2020-04-30']
价格:30000美分
}
然后,您可以在搜索时生成您要求您的项目具有的所有可用性的列表,例如(从4月28日到4月30日可用):

index.search(“”{
筛选器:“”+
'可用性:2020-04-28和可用性:2020-04-29和可用性:2020-04-30和'+

“price_cents>=”+lowPriceRange+”和price_cents不幸的是,我们存储全年的可用性。是否有任何方法可以使用SQL在Algolia之前或之后进行筛选?那么您将看到每个公寓的日期范围为66795个,这可能确实太贵了。结果列表是否总是期望很低(您将失去Algolia的速度,但仍将受益于它的文本相关性。目前,我们不会有很多结果,但展望未来,我们可能会有。这种解决方案的可扩展性如何?我可以采用哪些技术使其更具可扩展性?