ホームページ >バックエンド開発 >PHPチュートリアル >Linux 上で Sphinx、中国語単語セグメンテーション Coreseek、および PHP Sphinx 拡張機能をコンパイルしてインストールします。

Linux 上で Sphinx、中国語単語セグメンテーション Coreseek、および PHP Sphinx 拡張機能をコンパイルしてインストールします。

伊谢尔伦
伊谢尔伦オリジナル
2016-11-25 15:57:222101ブラウズ

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()は成功を示します。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。