У меня есть индекс сфинкса, определенный следующим образом:
sql_query= \
SELECT \
s.`id`, s.`name`, s.`views`, s.`released`,s.`seo_url`,\
CAST(s.`is_popular` AS SIGNED) as is_popular \
FROM `shows` s \
WHERE s.alias_id IS NULL
sql_attr_uint = views
sql_attr_uint = is_popular
sql_field_string = name
sql_attr_string = released
sql_field_string = seo_url
Я запрашиваю с расширением php pecl.
Проблема в том, что строковые атрибуты возвращаются в виде случайных целых чисел. Например.
[18] => Array
(
[id] => 3623
[weight] => 1624
[attrs] => Array
(
[name] => 865774050003
[views] => 16
[released] => 865774050021
[seo_url] => 865774050029
[is_popular] => 0
)
)
[19] => Array
(
[id] => 3820
[weight] => 1624
[attrs] => Array
(
[name] => 865774050059
[views] => 303
[released] => 865774050087
[seo_url] => 865774050095
[is_popular] => 0
)
)
Нестроковые атрибуты верны, но строки имеют разные значения при каждом запуске.
Сейчас я использую sql_field_string, но я пробовал только sql_attr_string, с теми же результатами.
Я использую последнюю версию sphinx для Windows. (Я также проверил с 2.1 безрезультатно).
Я довольно заблудился, у кого-нибудь есть предложения?
Это почти наверняка означает, что используется ваша версия sphinxapi.php
слишком стар
Вы могли бы использовать тот из используемой вами версии сервера — поэтому, если вы загрузили и установили определенную версию сервера sphinx, скопируйте файл sphinxapi.php из архива установки в папку вашего приложения.
(в основном у вас есть sphinxapi.php, который не понимает строковые атрибуты)
Итак, ответ таков: php_sphinx.dll, который я использую, вероятно, собран / скомпилирован для старой версии sphinx, которая не поддерживает строковые атрибуты.
При переходе на предоставленный sphinxapi.php все работает как рекламируется.
спасибо @barryhunter за подсказку о проблеме с версиями.