我正在研究新产品的原型,需要一些帮助才能找出algolia的可行性。我确实通过他们的文档,但找不到正确的答案。任何帮助表示赞赏。
我们对数据的最佳示例进行了分类。在数据集中,我们有地理定位(lat-lng)和类别
[
{
category: 'retail_shops',
"_geoloc": {
"lat": 40.639751,
"lng": -73.778925
},
title: 'walget1'
},
{
category: 'retail_shops',
"_geoloc": {
"lat": 40.639751,
"lng": -73.778925
},
title: 'walget1'
},
]
搜索要求
我们需要显示系统中的所有数据,但首先选择类别,将辅助距离作为辅助。
我正在尝试这样做是javascript,确实找到了搜索和searchForFacetValues方法,但文档是全方位的。任何理想如何实现这一目标?不需要代码,但一般指导肯定会有所帮助。
答案 0 :(得分:0)
为了做到这一点,您可以使用aroundLatLng
策略,在该策略中,您将使用与该类别匹配的过滤器进行查询,然后使用与该类别中不存在的所有对象匹配的另一个查询。然后,您可以在查询参数中使用aroundLatLngViaIp
字段或const client = algoliasearch('ApplicationID', 'apiKey');
// these two values would be obtained from somewhere (like InstantSearch)
const query = 'walg';
const category = 'retail_shops';
const queries = [{
indexName: 'products',
query: `${query}`,
params: {
hitsPerPage: 3,
filters: `category:${category}`,
aroundLatLngViaIP:true
}
}, {
indexName: 'products',
query: `${query}`,
params: {
hitsPerPage: 10,
filters: `NOT category:${category}`,
aroundLatLngViaIP:true
}
}];
const searchCallback = (err, content) => {
if (err) {
console.error(err);
return;
}
const categorySpecificResults = content.results[0];
for (var i = 0; i < categorySpecificResults.hits.length; ++i) {
console.log(categorySpecificResults.hits[i]);
}
const geolocatedOnlyResults = content.results[1];
for (var i = 0; i < geolocatedOnlyResults.hits.length; ++i) {
console.log(geolocatedOnlyResults.hits[i]);
}
}
// perform the 2 queries in a single API call:
// - 1st query targets index `products` with category filter and geolocation
// - 2nd query targets index `products` with negative category filter and geolocation
client.search(queries, searchCallback);
字段。
以下代码段应该可以帮助您更好地了解如何实现您的目标:
node_modules
您可以在此页面找到有关如何使用多个查询的更多信息:
如果您想对地理位置进行更细粒度的控制,例如定义搜索的精度或最大范围,您可以在这些页面上找到有关这些不同功能的更多信息: