Я недавно установил 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, я исправил это, но это не решило проблему.
Любые идеи?
$this->sphinxclient->getLastError()
и повторив результаты. - person Chris Henry   schedule 07.10.2012