我正在使用斯芬克斯搜索来获取记录。我有一个查询,以获取记录和排序,他们根据最近的城市和评级。但是,如果某个特定位置附近有许多城市,它会给我一个错误“searchd error:select:memory expanded”
错误:[\u error]=>搜索错误:选择:内存在'21277,49附近耗尽,if(cityidv=6985,50,if(cityidv=10801,51,if(cityidv=21399,52,if(cityidv=6992,53,if(cityidv=21176,54,if(cityidv=6891,55,if(cityidv=11848,56,if(cityidv=10136,57,58))作为citywisesort'`
这是我的密码:
$lat = $latitude * Pi() / 180;
$lon = $longitude * Pi() / 180;
$cl = new SphinxClient;
$cl->setSelect("* ,IF(cityidv=1981,1,IF(cityidv=13426,2,IF(cityidv=9693,3,IF(cityidv=11030,4,IF(cityidv=10370,5,IF(cityidv=14091,6,IF(cityidv=10125,7,IF(cityidv=10906,8,IF(cityidv=10825,9,IF(cityidv=10404,10,IF(cityidv=11452,11,IF(cityidv=10798,12,IF(cityidv=10106,13,IF(cityidv=13061,14,IF(cityidv=9519,15,IF(cityidv=24382,16,IF(cityidv=16087,17,IF(cityidv=25635,18,IF(cityidv=6770,19,IF(cityidv=19785,20,IF(cityidv=13051,21,IF(cityidv=10412,22,IF(cityidv=6033,23,IF(cityidv=10903,24,IF(cityidv=10810,25,IF(cityidv=10895,26,IF(cityidv=21405,27,IF(cityidv=10748,28,IF(cityidv=19305,29,IF(cityidv=10142,30,IF(cityidv=21442,31,IF(cityidv=11027,32,IF(cityidv=10138,33,IF(cityidv=18578,34,IF(cityidv=19433,35,IF(cityidv=11847,36,IF(cityidv=6597,37,IF(cityidv=10808,38,IF(cityidv=20920,39,IF(cityidv=6749,40,IF(cityidv=13059,41,IF(cityidv=10713,42,IF(cityidv=21565,43,IF(cityidv=21201,44,IF(cityidv=11012,45,IF(cityidv=9491,46,IF(cityidv=5768,47,IF(cityidv=19426,48,IF(cityidv=21277,49,IF(cityidv=6985,50,IF(cityidv=10801,51,IF(cityidv=21399,52,IF(cityidv=6992,53,IF(cityidv=21176,54,IF(cityidv=6891,55,IF(cityidv=11848,56,IF(cityidv=10136,57,58))))))))))))))))))))))))))))))))))))))))))))))))))))))))) AS citywisesort");
$cl->SetSortMode(SPH_SORT_EXTENDED, "citywisesort ASC,rating DESC);
$cl->SetMatchMode(SPH_MATCH_EXTENDED);
$result = $cl->Query("", "record");
有没有办法增加内存大小?这样就不会排气了
谢谢您。
1条答案
按热度按时间gj3fmq9x1#
有一种方法,但它需要破解源代码并从源代码重建。在您的案例中,最好使用sphinxql和remap()而不是if()。