Sphinx возвращает только 2 (из) 8 полей, используя Sphinx PHP API - PullRequest
1 голос
/ 18 августа 2011

Я пока не могу ответить на свой вопрос, вот ответ

Я идиот ... не переиндексирую каждый раз.

searchd --stop
indexer --all
searchd

Проблема решена. Извините, что тратит время впустую

** Конец ответа **

У меня есть модель PHP, выполняющая запрос к индексированной таблице (назовите ее SONGS).

Запрос в sphinx.conf выглядит следующим образом:

sql_query       = \
    SELECT \
    songs.id AS song_id, \
    songs.title AS song_title, \
    songs.upload_stamp AS song_published, \
    songs.uri AS song_uri, \
    songs.artist_id, \
    songs.song_rank, \
    songs.vote_count \
    FROM songs

Однако, когда я запускаю код для выполнения запроса, результирующий массив содержит только 2 поля song_published & artist_id и пропускает остальные 6 полей.

Код php выглядит следующим образом:

$this->cl->SetMatchMode(SPH_MATCH_ALL);
$this->cl->SetConnectTimeout ( 1 );
$this->cl->SetArrayResult ( true );
$this->cl->SetWeights ( array ( 100, 1 ) );

$result = $this->cl->Query($this->search_term,'song-index');

Я перепробовал множество вещей и перезапускал searchd ( edit и переиндексировал) каждый раз, но безрезультатно ... он возвращает правильные результаты, но только 2 из 8 полей в результате массив.

Любая помощь будет очень признательна !!!!

EDIT ...

Вот также объявления для значений

sql_attr_uint       = artist_id
sql_attr_uint       = song_id
sql_attr_uint       = vote_count
sql_attr_timestamp  = song_published
sql_attr_float      = song_rank
sql_attr_string     = song_uri
sql_attr_string     = song_title

Ответы [ 2 ]

0 голосов
/ 05 октября 2011

Я идиот ... не переиндексирую каждый раз.

searchd --stop indexer --all searchd Проблема решена.Извините, что потратил время впустую :( Надеюсь, это кому-то поможет.

0 голосов
/ 03 октября 2011

Вы также можете запустить следующее для создания новых индексов после изменений конфигурации без остановки searchd.он будет вращаться в новом индексе после завершения генерации, а затем удалит старый.

indexer --rotate --all

Подробнее см. справочник по индексатору .

...