Php 斯芬克斯大地学家的搜寻行动很奇怪

Php 斯芬克斯大地学家的搜寻行动很奇怪,php,sphinx,geo,Php,Sphinx,Geo,最近,我在斯芬克斯大地学家的搜索中遇到了一些问题,我不知道问题出在哪里 斯芬克斯形态: index vacancy { source = vacancies path = C:\workspace\tmp\sphinx\data\vacancies docinfo = extern charset_type = utf-8 } source vacancies : base { sql_que

最近,我在斯芬克斯大地学家的搜索中遇到了一些问题,我不知道问题出在哪里

斯芬克斯形态:

index vacancy
{
    source          = vacancies
    path            = C:\workspace\tmp\sphinx\data\vacancies
    docinfo         = extern
    charset_type    = utf-8
}

source vacancies : base
{
    sql_query       = \
        SELECT radians(Latitude) as latitude, radians(Longitude) as longitude \
        FROM vacancies as v

    sql_attr_float  = latitude
    sql_attr_float  = longitude
}
为了清晰起见,我从索引查询中删掉了一些不相关的信息

以下是我正在运行的PHP:

public function geospatial($lat, $long, $distance, $unit = 'miles')
{
    switch(strtolower($unit)) {
        case 'km':
        case 'kilometers':
            $multiplier = 1000;
        break;
        case 'm':
        case 'miles':
        default:
            $multiplier = 1609.3440;
        break;
    }

    $radius = (float) ($distance * $multiplier);
    $this->Client->SetMatchMode(SPH_MATCH_ALL);
    $this->Client->SetGeoAnchor('latitude', 'longitude', (float) deg2rad($lat), (float) deg2rad($long));
    $this->Client->SetFilterFloatRange('@geodist', 0.0, $radius);
    $this->Client->SetSortMode(SPH_SORT_EXTENDED, "@geodist ASC");

    return $this->Client->query('', 'vacancy');
}
我得到了奇怪的结果。例如,我将距离(英里)设置为50,并收到400多英里以外的结果。因此,查询确实做了一些事情,但没有做它应该做的事情

我参加过多个“教程”,例如:

没有什么不合适的

我知道我的数据集在纬度/经度点方面是正确的,所以我认为这是我的配置有问题,或者是一些错误的PHP。我想补充一点,这确实在某种程度上起到了作用(老实说!),所以这可能是维护/扩展性的问题

我知道这种类型的问题很难调试,所以我不再寻找一个可靠的答案,而只是寻找一个可能不合适的提示


谢谢

您查看结果集中的属性了吗?@geodist值看起来正常吗?嗯,刚刚进行了另一次检查(以100英里半径进行测试),我的geodist属性设置为5。我得到的两个结果中,一个测地仪在5以下,但当我绘制地图时,其中一个距离超过400英里。我还错过了其他我预期的100英里以内的结果。我不知道从哪里开始寻找罪魁祸首。“我的大地测量属性设置为5”是什么意思?如果设置为5,那么结果如何低于5?结果表明我查询中的一个连接不正确。具有讽刺意味的是,我从问题中删除了这一点,因为我想保持简洁。谢谢你的快速回复,现在一切都好了。我要去坐在角落里,至少我能弄明白!