sphinx 做距离排序

我用sphinx做一个距离排序的功能,现在报了一个错误,index distance: unknown latitude attribute 'latitude'

    $log = 110.362616;
    $lat = 20.030727;
    $radius = (float) 10000.0 * 1.61; //搜索10公里以内的地点
    $sphinx = new Sphinx();
    $sphinx->SetMatchMode(SPH_MATCH_ANY);
    $sphinx->SetSortMode(SPH_SORT_EXPR, "@weight");
    $sphinx->SetGeoAnchor('latitude', 'longitude',$lat * M_PI/180.0,$log * M_PI/180.0);
    $sphinx->SetSortMode(SPH_SORT_EXTENDED, '@geodist ASC'); // 按距离正向排序
    $sphinx->SetFilterFloatRange('@geodist', 0.0, $radius); // 过滤掉大于10公里的地点
    $result = $sphinx->Query('', '*');
    我在sphinx配置的sql是sql_query               = select RADIANS(longitude) as longitude,RADIANS(latitude) as atitude from distance
阅读 4k
1 个回答

需要在配置文件写下
sql_query = select *,RADIANS(latitude) AS latitude,RADIANS(longitude) AS longitude from distance

sql_attr_float = latitude
sql_attr_float = longitude

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进