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