如何根据给定值对我的算法记录进行排名? 该值是根据用户的 IP 位置动态变化的。
我希望 SC
状态显示在列表中的第一个位置,我该怎么做?
例如我有一条记录
[
{
"category":"Emergency Department",
"address": {"state": "SC"}
......
},
{
"category":"Emergency Department",
"address": {"state": "NC"}
......
},
{
"category":"Emergency Department",
"address": {"state": "NC"},
......
},
{
"category":"Radiology",
"address": {"state": "WV"}
......
},
{
"category":"PROVIDENCE HOSPITAL",
"address": {"state": "TN"}
......
},
{
"category":"PROVIDENCE HOSPITAL",
"address": {"state": "TN"}
......
},
]
我这样写了我的搜索代码
algoliaIndex.search({
query: 'Emergency Department' +' '+ 'SC',
}, function(err, hits) {
console.log(hits.hits);
});
我的索引设置
[
'searchableAttributes' => [
'general_name',
'name',
'category',
'address.city',
'address.state',
'address.zip_code',
],
'customRanking' => [
"desc(address.state)",
"desc(general_name)"
],
]
最佳答案
您可以使用地理搜索功能根据用户的位置对结果进行排序。这是实现它的指南:https://www.algolia.com/doc/guides/geo-search/geo-search-overview/#filter-and-sort-around-a-location
API允许您直接提供ip,它会自动转换为相应的坐标:https://www.algolia.com/doc/guides/geo-search/geo-search-overview/#by-looking-at-the-ip-address
要实现此目的,您需要将您的 address.state 字段转换为纬度/经度坐标才能使其正常工作。你可以看看这个SO线程来找到一个数据库来做到这一点:Latitude and Longitude based on Zip Code
关于javascript - Algolia:如何根据值对搜索进行排名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42268978/