ホームページ >バックエンド開発 >PHPチュートリアル >Linux 上で Sphinx、中国語単語セグメンテーション Coreseek、および PHP Sphinx 拡張機能をコンパイルしてインストールします。
Linux環境はCentOS5.5、Ubuntu12.04
1. ソフトウェアダウンロード
sphinx-2.1.3
coreseek-4.1
2. sphinxをインストールします
tar zxvf sphinx-2.1.3.tar.gz //解压sphinx包 cd sphinx-2.1.3 ./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql/
--prefix: sphinxのインストールパスを指定します
- -with-mysql: mysql のインストール パスを指定します
sudo make && make install
コンパイルしてインストールします
インストールが成功すると、sphinx は 3 つのコマンドを作成します:
indexer 创建索引命令 searchd 启动进程命令 search 命令行搜索命令
注: 上記のコマンドは、次の方法で /usr/local/sphinx/bin ディレクトリにあります。 default
3 、スフィンクスを設定し、
cd /usr/local/sphinx/etc
を使用してスフィンクス
sudo cp sphinx.conf.dist sphinx.conf
の etc ディレクトリに入り、設定ファイルをコピーし、 sphinx.conf という名前を付けます。
このディレクトリ内の example.sql ファイルを test という名前のローカル データベースにインポートします。
構成情報を変更し、データベース接続情報をローカル データベース情報に変更します。
次に、次のコマンドを使用してデータをインポートし、インデックスを生成します:
$ cd /usr/local/sphinx/etc $ sudo /usr/local/sphinx/bin/indexer --all
インデクサ コマンドの実行時にエラーが報告された場合:
ERROR: index 'test1stemmed': sql_connect: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
このマシンでは、mysql.sock の場所が変更されたことが原因である可能性があります。場所は /tmp/mysql.sock (mysql のインストール時の設定に関連します) です。sphinx.conf の次の行のコメントを解除します (先頭の # 記号を削除します):
#sql_sock = /tmp/mysql.sock
上記のインデクサー コマンドを再度実行すると、すべてが正常です。
クエリを実行するには、次のコマンドを使用できます:
$ cd /usr/local/sphinx/etc $ sudo /usr/local/sphinx/bin/search test
検索プロセス中にエラーが報告される場合があります:
index 'test1': search error: query too complex, not enough stack (thread_stack=-2665032K or higher required).
sphinx.conf の searchd モジュールの thread_stack の値を変更しようとしましたが、変更されました問題が解決しない場合は、ソース src1
#sql_query_info = SELECT * FROM documents WHERE id=$id
の次の行をコメントアウトして、検索コマンドを実行すれば OK です。
バックグラウンドで Sphinx を起動するには、次のコマンドを使用します。
$ cd /usr/local/sphinx/etc $ sudo /usr/local/sphinx/bin/searchd
php スクリプトを使用して、検索コマンドを実行します。 次のコマンドを使用できます:
$ cd sphinx/api $ php test.php test
入力結果は次のとおりです:
Query 'test ' retrieved 3 of 3 matches in 0.022 sec. Query stats: 'test' found 10 times in 6 documents Matches: 1. doc_id=1, weight=101, group_id=1, date_added=2014-01-20 10:07:37 2. doc_id=2, weight=101, group_id=1, date_added=2014-01-20 10:07:37 3. doc_id=4, weight=1, group_id=2, date_added=2014-01-20 10:07:37
4. coreseek をインストールします。
tar zxvf coreseek-4.1.tar.gz
解凍後、2 つのディレクトリが表示されます: csft -4.1、mmseg-3.2.14
最初に mmseg をインストールします
cd mmseg-3.2.14/ ./configure --prefix=/usr/local/mmseg
エラーが発生した場合はコンパイルします: 「config.status: error: 入力ファイルが見つかりません: src/Makefile. in"
解決策:
sudo apt-get install automake aclocal libtoolize --force 我运行后有一个错误,没管它。 automake --add-missing autoconf autoheader make clean ./configure --prefix=/usr/local/mmseg make sudo make install
csft(coreseek)をインストールします
cd csft-4.1/ sh buildconf.sh ./configure --prefix=/usr/local/coreseek --with-mysql=/usr/local/mysql/ --with-mmseg=/usr/local/mmseg/ --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/ sudo make && make install
インストールが完了したら、sphinxのインストール後と同じです。coreseek/etc/example.sqlファイルをローカルにインポートする必要がありますデータベースを削除し、sphinx.conf.dist を csft.conf にコピーし、データベースのユーザー名とパスワードを変更すると、テストは失敗します。解決策は sphinx のエラー解決策と同じです。スフィンクスを使用するには、次のことを行う必要があります
2. スフィンクス設定ファイルを作成します。
4. デフォルトのインデックスを生成します。は 9312
5 です。PHP を使用してスフィンクス サービスに接続します
sphinx を開始します
cd /usr/local/coreseek/bin/ ./searchd
コマンドを開始します
searchd コマンド パラメータの概要:
-c は設定ファイルを指定します
--stop サービスを停止します
-- pidfile は PID ファイルを明示的に指定するために使用されます
-p はポートを指定します
5、php はスフィンクス拡張機能をインストールします
sudo pecl install sphinx
エラーが発生した場合: 「configure: error: libsphinxclient headers が見つかりません」
解決策:
cd coreseek-4.1/csft-4.1/api/libsphinxclient/ ./configure --prefix=/usr/local/libsphinxclient sudo make && make install
解決済み!
戻って実行を続けます
./configure --with-php-config=/usr/local/php/bin/php-config --with-sphinx=/usr/local/libsphinxclient sudo make && make install
「共有拡張機能のインストール: /usr/lib/php5/20090626/sphinx.so」のようなメッセージが表示され、成功したことが示されます。
ディレクトリに入ると、sphinx.soファイルが生成されていることがわかります
php.iniにsoファイルをロードします
extension=/usr/lib/php5/20090626/sphinx.so
Apacheを再起動します、phpinfo()は成功を示します。