最近、MySQL データベース用に sphinx をインストールし、構成ファイルを構成しました。search.exe を実行すると正しい結果が得られますが、PHP API を ( CodeIgniter のラッパーと共に) 使用すると、正しい結果が得られます。私はまだ0ゼロの結果です。これで、私の php コードは基本的なもの (キーを取得し、mysql クエリを実行し、結果を返す) であるため、正しいと確信しています。そのような問題を引き起こす可能性のある理由は何ですか? これは sphinx 構成ファイルの searchd 部分です。何か変更する必要はありますか? :
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 リッスンをコメントアウトしているため、これが問題になる可能性はありますか?
これが users_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
}
また、もう 1 つ、API で、API の Query 関数の引数を反転しました。それを修正しましたが、問題は修正されませんでした。
何か案は?