0

最近、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 関数の引数を反転しました。それを修正しましたが、問題は修正されませんでした。

何か案は?

4

1 に答える 1

1

関数 SetServer のデフォルト値は「localhost」で、ポートは「9312」です。構成ファイルに別のポートがあり、9312 リッスンをコメントアウトしているため、これが問題になる可能性はありますか?

それは確かに問題の原因になります。クライアントが接続しようとしているポートをリッスンするサーバーが必要です。それらは同じである必要があります。

さらに言えば、searchd サーバーデーモンを実行していますか? Windows では通常、サービスとしてインストールします。

(そして、ファイアウォールが searchd がリッスンしているポートへのアクセスを妨げていないことを確認してください)

于 2012-10-07T18:36:08.193 に答える