gpt4 book ai didi

Algolia AND 搜索数组

转载 作者:行者123 更新时间:2023-12-04 14:42:15 25 4
gpt4 key购买 nike

我正在寻找一种在 Algolia 中搜索至少一个数组元素满足多个条件的记录的方法。
举个例子,想象一下这样的记录:

{
"name": "Shoes",
"price": 100,
"prices": [
{
"start": 20160101,
"end": 20160131,
"price": 50,
},
{
"start": 20160201,
"end": 20160229,
"price": 80,
}
]
}

我正在寻找一种方法来执行如下查询:
prices.price<60 AND prices.start<=20160210 AND prices.end>=20160210
(指定日期价格低于 60 的产品)

该查询不应返回任何内容,因为该日期不满足价格条件,但无论如何都会返回记录。可能是因为在所有价格中“全局”满足条件。

我是 Algolia 的初学者,正在努力学习。有没有办法可以完成所需的请求,或者我必须为价格单独索引并使用 multiple queries ?

谢谢。

最佳答案

facetFiltertagFilter应用于数组,Algolia 的引擎检查数组的任何元素是否匹配,然后转到下一个条件。

它以这种方式而不是您期望的方式表现的原因很简单:假设您有一个字符串数组(如标签):

{ tags: ['public', 'cheap', 'funny', 'useless'] }

当用户想要查找“无用”和“有趣”的记录时,该用户不是在寻找同时“无用”和“有趣”的标签,而是要查找同时包含两个标签的记录大批。

对此的解决方案是以某种方式对您的对象进行非规范化:将具有一组对象的记录转换为具有一个对象的多条记录。

所以你会转变
{
"name": "Shoes",
"price": 100,
"prices": [
{ "start": 20160101, "end": 20160131, "price": 50 },
{ "start": 20160201, "end": 20160229, "price": 80 }
]
}

进入
[
{
"name": "Shoes",
"default_price": 100,
"price": { "start": 20160101, "end": 20160131, "price": 50 }
},
{
"name": "Shoes",
"default_price": 100,
"price": { "start": 20160201, "end": 20160229, "price": 80 }
}
]

您可以在同一索引中执行此操作(并使用 distinct 进行重复数据删除),也可以每月或每天创建一个索引。这实际上取决于您的用例,这使得为您提供正确的解决方案有点困难。

关于Algolia AND 搜索数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34682395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com