ホームページ >バックエンド開発 >PHPチュートリアル >スフィンクスの全文検索とexamples_PHPチュートリアルを有効にする

スフィンクスの全文検索とexamples_PHPチュートリアルを有効にする

WBOY
WBOYオリジナル
2016-07-13 17:04:07892ブラウズ

Sphinxをコンパイルしてインストールする際、中国語文字化けが多発し、最終的にはエラーが出て行き詰まってしまいました。 公式 Web サイトにアクセスして rpm パッケージを直接ダウンロードしましたが、インストールは簡単でした。 。 。特定のエラーを調査するつもりはありません。開発で忙しい~~
両方のパッケージをインストールします。 1つはmmsegです これは中国語辞書を生成するプログラムです もう1つはcsftであり、sphinxの中国語版です インストール後に rpm -ivh を実行します。とてもスムーズに進みました~30分もかからずに取り付けられました。 。 。
怠け者なので、csft に直接アクセスして中国語辞書ライブラリをダウンロードしました。とても良い、とても思慮深い。 。 。
unigram.txt uni.lib
unigram.txt 辞書テキスト。独自のキーワードを追加できます
次に、
を使用します mmseg -u unigram.txt 辞書
ファイルを生成: unigram.txt.uni 次に、uni.lib の名前を変更します。これは sphinx によって認識される辞書です。 どこに置きますか? これを sphinx.conf で設定した辞書パスに置きます。これについては後ほど説明します
それでは、ほぼ完成です
Sphinx の便利なプログラムをいくつか見てみましょう
[root@beihai365 /]#csft-
csft-indexer csft-search csft-searchd
csft-indexerは全文検索インデックスを生成するプログラムです
csft-search は検索が有効かどうかをテストするために使用されますが、これも非常に使いやすいので、クライアント スクリプトの開発を使用して全文検索が成功したかどうかを確認してみてはいかがでしょうか
csft-searchd スフィンクス検索用のデーモンです。 起動後はphp pythonなどのスクリプトを使用して
クエリを開くことができます。 とても簡単です~~
2 つの重要な部分を見てみましょう
sphinx.conf 設定ファイル
プレーンコピーをクリップボードプリントに表示しますか?
ソース tmsgs
{
タイプ に SQL_ユーザー SQL_パス SQL_DB に #sql_sock                                                                                                                                                                                                         sql_query #sql_attr_uint sql_attr_uint }
インデックス tmsgsindex {
ソース         パス = /var/mmseg/searchdata/beihai365
        docinfo = extern
        charset_type = zh_cn.gbk
        #min_prefix_len = 0
        #min_infix_len = 2
        #ngram_len = 2
        charset_dictpath = /var/mmseg/data
        #min_prefix_len = 0
        #min_infix_len = 0
        #min_word_len = 2
}
  
インデクサー
{
        mem_limit = 128M
}
  
検索しました
{
        #listen = 3312
        ログ = /var/log/searchd.log
        query_log = /var/log/query.log
        read_timeout = 5
        max_children = 30
        pid_file = /var/log/searchd.pid
        max_matches = 1000
        #シームレス回転 = 1
        #preopen_indexes = 0
        #unlink_old = 1
}
ソースtmsgs
{
        type = mysql
        sql_host = localhost
        sql_user = root
        sql_pass = 1
        sql_db = phpwind75sp3
        sql_port = 3306 # オプション、デフォルトは 3306 です
        #sql_sock = /tmp/mysql3307.sock
        sql_query_pre = 名前を設定 gbk
        sql_query = pw_tools から id、名前、タイプ、在庫を選択します
        #sql_attr_uint = id
        sql_attr_uint = 在庫
}
インデックス tmsgsindex
{
        ソース = tmsgs
        パス = /var/mmseg/searchdata/beihai365
        docinfo = extern
        charset_type = zh_cn.gbk
        #min_prefix_len = 0
        #min_infix_len = 2
        #ngram_len = 2
        charset_dictpath = /var/mmseg/data
        #min_prefix_len = 0
        #min_infix_len = 0
        #min_word_len = 2
}
インデクサー
{
        mem_limit = 128M
}
検索しました
{
        #聞いてください = 3312
        ログ = /var/log/searchd.log
        query_log = /var/log/query.log
        read_timeout = 5
        max_children = 30
        pid_file = /var/log/searchd.pid
        max_matches = 1000
        #シームレス回転 = 1
#preopen_indexes以来 #unlink_oldのせいで }

テストクライアント
コード
をもう一度見てください。 プレーンコピーをクリップボードプリントに表示しますか? header("コンテンツタイプ:text/
html
;charset=utf-8"); 「sphinxapi.php」を含めます。 $cl = 新しい SphinxClient(); $cl->SetServer('localhost',3312); $cl->SetMatchMode(SPH_MATCH_ALL); $cl->SetArrayResult(true); $res = $cl->Query("名刺","*"); プリント_r($res); ?> header("コンテンツタイプ:text/html;charset=utf-8");
「sphinxapi.php」を含める;
$cl = 新しい SphinxClient();
$cl->SetServer('localhost',3312);
$cl->SetMatchMode(SPH_MATCH_ALL);
$cl->SetArrayResult(true);
$res = $cl->Query("名刺","*");
print_r($res);

?>
キーワード「名刺」は私が手動で辞書に追加したものです。本当に見つかるか試してみましょう
プレーンコピーをクリップボードプリントに表示しますか?
配列
(
[エラー] => [警告] => [ステータス] => 0
[フィールド] => 配列
( [0] => 名前 [1] => )

[attrs] => 配列
( [在庫] = > 1
)

[一致] => 配列
( [0] =>                                                                             」                                                                                                                                                                                                                                                                  ​ [属性] = & GT;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
)

)

[合計] => 1
[合計_見つかった] => 1
[時間] => 0.018
[単語] => 配列
( [名刺] = & GT;                                                                             [ドキュメント] = & gt; 1
[ヒット] = & GT
; )

)

)
配列
(
[エラー] => [警告] =>    [ステータス] => 0
    [フィールド] =>配列
        (
            [0] =>名前
            [1] =>タイプ
        )
    [attrs] =>配列
        (
            [在庫あり] => 1
        )
    [一致] =>配列
        (
            [0] =>配列
                (
                    [id] => 8
                    [体重] => 1
                    [属性] =>配列
                        (
                            [在庫あり] => 100
                        )
                )
        )
    [合計] => 1
    [合計_見つかった] => 1
    [時間] => 0.018
    [単語] =>配列
        (
            [名前] =>配列
                (
                    [ドキュメント] => 1
                    [ヒット] => 1
                )
        )
)
全く問題ありません。検索できました。 几个关键の操作
[root@beihai365 /]# csft-searchd --stop 停止搜索守护
[root@beihai365 /]# csft-indexer --all すべてのノードに対してインデックスを生成します。また、特定のノードに対してインデックスを生成することもできます。例:csft-indexer xx
[root@beihai365 /]# csft-search アプリ 検索キーワード アプリ。次の情報は存在せず、命中のいかなる文書も見ません。
Coreseek フルテキスト サーバー 3.1
著作権 (c) 2006-2008 coreseek.com
設定ファイル「./csft.conf」を使用しています...
1、
ポイント:1、1;        インデックス 'tmsgsindex': クエリ 'App ': 0.017 秒で合計 0 件中 0 件の一致が返されました
言葉:
1.「アプリ」: 0 ドキュメント、0 ヒット
一般にこれらのコマンドを実行する際には、 --config sphinx.conf 構成ファイルのパスを手動で設定する必要があります。 所以我干张 ln -s 一在 ./ 。このようなことはありません毎回都去敲入 --config

http://www.bkjia.com/PHPjc/630884.html

本当http://www.bkjia.com/PHPjc/630884.html技術記事 sphinx をインストールするときに、非常に多くの中国語乱コードが出現し、最後に错误が常駐しました。私は官方に行って rpm パッケージを直接ダウンロードし、インストールを行いました。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。