Sphinx search.exe возвращает результаты правильно, но PHP API ничего не возвращает

Я недавно установил sphinx для своей базы данных MySQL и настроил файл конфигурации, и я получаю правильные результаты при запуске search.exe, но когда я использую PHP API (вместе с его оболочкой для CodeIgniter). Я до сих пор 0 ноль результатов. Теперь я почти уверен, что мой php-код правильный, поскольку он базовый (получите ключи, запустите запрос mysql и верните результаты). Какие причины могут вызвать такую ​​проблему? вот часть searchd конфигурационного файла sphinx, мне нужно что-то изменить? :

searchd
{
# listen            = 9312
listen          = 9306:mysql41
port            = 3312
log         = C:/sphinx/log/searchd.log
query_log       = C:/sphinx/log/query.log
read_timeout        = 5
max_children        = 30
pid_file        = C:/sphinx/log/searchd.pid
max_matches     = 1000
seamless_rotate     = 1
preopen_indexes     = 1
unlink_old      = 1
workers         = threads # for RT to work
binlog_path     = C:/sphinx/data


}

и вот мой запрос сфинкса search.php:

        $search_string=$this->input->post('q');
        $this->load->library('Sphinxclient');
        $this->sphinxclient->setMatchMode(SPH_MATCH_ANY);
        $this->sphinxclient->SetArrayResult(TRUE);
        $users_ids=$this->sphinxclient->Query('users_info',$search_string);

Теперь я не уверен, как API или sphinx находят каталог mysql и подключаются к нему, но я читаю документацию sphinx, и в разделе основных функций API говорится, что функция SetServer имеет значения по умолчанию «localhost» и порт "9312". Может ли это быть проблемой, так как в моем файле конфигурации у меня другой порт, и я закомментировал прослушивание 9312?

Вот мое определение источника и индекса user_info (хотя я сомневаюсь, что это проблема, поскольку search.exe может получать результаты).

source users_info
{
type                            = mysql

sql_host                        = localhost
sql_user                        = admin
sql_pass                        = admin
sql_db                          = users
sql_sock                        =  /var/run/mysqld/mysqld.sock
sql_port                        = 3306                  


sql_query                       = \
        SELECT id, fullname,username FROM users_info;



sql_query_info          = SELECT * FROM users WHERE id=$id
}

и индекс:

index users_info
{
source          = users_info
path            = C:/sphinx/data/users_info
docinfo         = extern
charset_type        = utf-8
}

Кроме того, еще одна вещь, в API я перевернул аргументы в функции запроса в API, я исправил это, но это не решило проблему.

Любые идеи?


person Pacemaker    schedule 07.10.2012    source источник
comment
Вы запускали индексатор? Кроме того, есть ли какие-либо ошибки после запуска запроса? Вы можете найти это, запустив $this->sphinxclient->getLastError() и повторив результаты.   -  person Chris Henry    schedule 07.10.2012
comment
Проблема заключается в том, что в моем поле ввода в форме я не указал метод, поэтому он не получил ввод поискового запроса. Теперь все работает. Просто нубская ошибка. Большое спасибо   -  person Pacemaker    schedule 08.10.2012


Ответы (1)


в нем говорится, что функция SetServer имеет значения по умолчанию «localhost» и порт «9312». Может ли это быть проблемой, так как в моем файле конфигурации у меня другой порт, и я закомментировал прослушивание 9312?

Это, безусловно, будет причиной проблемы. Вам нужно, чтобы сервер прослушивал порт, к которому пытается подключиться клиент. Они должны быть одинаковыми.

Если на то пошло, у вас даже запущен демон сервера searchd? Под windows обычно устанавливается как служба.

(и убедитесь, что брандмауэр не препятствует доступу к портам, которые прослушивает searchd)

person barryhunter    schedule 07.10.2012
comment
Проблема заключается в том, что в моем поле ввода в форме я не указал метод, поэтому он не получил ввод поискового запроса. Теперь все работает. Просто нубская ошибка. Большое спасибо - person Pacemaker; 08.10.2012
comment
@Pacemaker Круто. Тогда вы должны принять ответ Баррихантера! - person Cogicero; 03.08.2013