我正在尝试使用SphinxClient
for PHP来搜索GeoDatabase中基于文本的位置。这是我使用的代码:
$SphinxClient=new Sphinx\SphinxClient();
$SphinxClient->setServer('myserver', 'myport');
$SphinxClient->setMatchMode(SPH_MATCH_EXTENDED2);
$result=$SphinxClient->query('@country DE', 'geonames');
$result2=$SphinxClient->query('@country US', 'geonames');
如果我运行上述代码,$result
找不到匹配项,并且报告没有错误或警告,$result2
会找到一堆匹配项,并且也不会报告任何错误。
如果我从命令行运行以下两个查询(这应该是上述两个php客户端查询的等价项),它们都会返回结果:
select geonameid_attr from geonames where match('@(country) "DE"');
select geonameid_attr from geonames where match('@(country) "US"');
这里也是sphinx.conf文件中的相关部分,我从中构建了sphinx表:
sql_query = SELECT geonames.geonameid, geonames.geonameid AS geonameid_attr, geonames.name AS name, geonames.asciiname AS asciiname, geonames.alternatenames AS alternatenames, geonames.country AS country, geonames.fcode AS fcode FROM geonames WHERE fcode IN ('PPL', 'PPLA', 'PPLA2', 'PPLA3', 'PPLA4', 'PPLC', 'PPLCH', 'PPLF', 'PPLG', 'PPLH', 'PPLL', 'PPLQ', 'PPLR', 'PPLS', 'PPLW', 'PPLX', 'STLMT') OR fcode LIKE 'ADM%'
sql_attr_uint = geonameid_attr
可能是什么问题?我错误地使用了SphinxClient::query
函数吗?