javascript - Algolia:如何根据值对搜索进行排名?

标签 javascript php algolia

如何根据给定值对我的算法记录进行排名? 该值是根据用户的 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/

相关文章:

javascript - jQuery/JavaScript : My recursive setTimeout function speeds up when tab becomes inactive

php - 如何将 PHP 数组写入 xls 文件?

javascript - Algolia Places 错误 'container' 必须指向 <input> 元素

javascript - 这种基于 IIFE 的 JavaScript 模式有什么好处?

javascript - 通过谷歌应用脚​​本将文件上传到谷歌驱动器时出现问题

php - 如何创建一个 Facebook 风格的 "Like"系统?

php - 我如何让用户能够在他们的个人资料上使用自定义 CSS?

javascript - algolia instantsearch refinementList 项目在搜索其他内容时切换

algolia - 当我根据排序要求添加新的指数副本时,Algolia 是否会产生任何费用?

javascript - 如何获取元素相对于父元素的位置?