Linuxインストールsphinx全文検索、およびphpユースケース

最初にlnmp環境をインストールしてください。インストールされていない場合は、を参照してください。

https://blog.csdn.net/hgb24660/article/details/108938963

1.公式ウェブサイトにアクセスしてパッケージをダウンロードします

http://sphinxsearch.com/

ここでは、wgetを介してソフトウェアパッケージをダウンロードします。コマンドは次のとおりです。

wget http://sphinxsearch.com/files/sphinx-2.1.6-release.tar.gz

2.圧縮パッケージを加圧します。コマンドは次のとおりです。

tar zxvf sphinx-2.1.6-release.tar.gz

ソースコードパッケージのインストールサポートされている他の関連クラスライブラリファイルがインストールされていない場合は、最初に他のクラスライブラリパッケージファイルをインストールします。以前に関連クラスライブラリファイルをインストールしたことがある場合は、この手順をスキップします。

yum -y install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel

3.実行するディレクトリにcdします

./configure --prefix=/usr/local/sphinx

4. make && makeinstallを使用してコンパイルします

make && make install

5.構成ファイルを編集します

cd /usr/local/sphinx/etc/

デフォルトの構成ファイルをコピーして、構成ファイルを再作成します。sphinx.conf.distのフルバージョンにはデフォルトの構成があります。コンテンツがたくさんあります。ここでは、sphinx-min.conf.distのミニバージョンをコピーすることを選択します。

cp /usr/local/sphinx/etc/sphinx-min.conf.dist /usr/local/sphinx/etc/sphinx.conf
vim sphinx.con

まず、構成における次の概念を理解します。

-source:数据源,数据是从什么地方来的
-index:索引,当有数据源之后,从数据源处构建索引,索引实际上就是相当于一个字典检索。有了整本字典内容以后,才会有字典检索。
-searchd:提供搜索查询服务,启动 sphinx 服务一般使用 /usr/local/sphinx/bin/searchd -c /usr/local/etc/sphinx.conf
-indexer:构建索引,当需要构建索引的时候就调用indexer这个命令:/usr/local/bin/indexer -c /usr/local/etc/sphinx.conf --all --rotate
-attr:属性,属性是存在索引中的,它不进行全文索引,但是可以进行过滤和排序

構成データベース
ここに画像の説明を挿入

6. / usr / local / sphinx / etc /ディレクトリのexample.sqlをデータベースにインポートします(全文検索に使用されるテストデータ、他のテーブルを使用できますが、データが必要です)

进入mysql
mysql -u xxx -p
show databases;		//查看数据库
create database test;	//创建数据库
source /usr/local/sphinx/etc/example.sql  //导入sql文件

ここに画像の説明を挿入

mysql
6.5を終了します。mysql.ini構成ファイルソケット
変更して、/ tmpの下のmysql.sockを/ var / lib / mysql /に移動します。
ここに画像の説明を挿入

mkdir /var/lib/mysql
chmod 777 /var/lib/mysql
cd /tmp/
mv mysql.sock /var/lib/mysql/

ソケットを変更し、MySQLサービスを再起動します
ここに画像の説明を挿入

8.スフィンクスサービスを開始します

/usr/local/sphinx/bin/searchd -c /usr/local/sphinx/etc/sphinx.conf

ここに画像の説明を挿入

7.スフィンクスインデックスファイルを作成します

/usr/local/sphinx/bin/indexer -c /usr/local/sphinx/etc/sphinx.conf --all --rotate
如果创建的索引文件比较多而又不需要全部重新生成索引,可以单独生成
/usr/local/sphinx/bin/indexer -c /usr/local/sphinx/etc/sphinx.conf test1
/usr/local/sphinx/bin/indexer -c /usr/local/sphinx/etc/sphinx.conf testrt


警告の場合:pid_file '/ usr / local / sphinx / var / log / searchd.pid'を開くことができませんでした。
警告:インデックスが回転していません。
または
致命的:停止:pidファイル '/ usr / local / sphinx / var / log / searchd .pid 'が存在しないか、読み取り可能な
解決策ではありません
start sphinx serviceが動作です。startsphinxservice
ここに画像の説明を挿入
を使用してから、再度実行してください。

サービスの使用を停止するには:

/usr/local/sphinx/bin/searchd -c /usr/local/sphinx/etc/sphinx.conf --stop

sphinxのLinuxインストールが完了しました。

phpはスフィンクスケースを使用します

1.PHPインストールスフィンクス拡張モジュール

  • libsphinxclientのサポートが必要

libsphinxclientファイルは、解凍されたソースファイルのapiフォルダーに存在します

cd sphinx-2.1.6-release/api/libsphinxclient/
./configure -prefix=/usr/local/sphinx/
make && make install

スフィンクス拡張機能をダウンロードし、リンクをダウンロードします:https://pecl.php.net/package/sphinx
ここに画像の説明を挿入
ここに画像の説明を挿入

実行するディレクトリを解凍して入力します。

phpize
./configure --with-php-config=/www/server/php/56/bin/php-config --with-sphinx=/usr/local/sphinx/
make && make install

注意:

--With-php-config = / www / server / php / 56 / bin / php-config:は、php環境ファイルをインストールするディレクトリです。
最後に、スフィンクス拡張子が表示されます。
ここに画像の説明を挿入
次に、php.iniファイルを構成します。
php.iniにスフィンクス拡張機能ロードします。に追加

[sphinx]
extension=/www/server/php/56/lib/php/extensions/no-debug-non-zts-20131226/sphinx.so

ここに画像の説明を挿入

サービスを再起動し、phpinfoを確認して、sphinxが正常にインストールされているかどうかを確認します
ここに画像の説明を挿入

2.phpコードテストスフィンクス

<?php
    $sphinx = new SphinxClient;
    $sphinx->setServer("127.0.0.1", 9312);
    $sphinx->setMatchMode(SPH_MATCH_ANY);   //匹配模式 ANY为关键词自动拆词,ALL为不拆词匹配(完全匹配)
    // $sphinx->SetArrayResult ( true );    //返回的结果集为数组
    $keyword = 'is';
    // $result = $sphinx->query($keyword,"*");     //星号为所有索引源
    $result = $sphinx->query($keyword,"test1");     
    $err = $sphinx->GetLastError();                 //错误信息
    if(!empty($err)) {
    
    
        print_r($result);
    }
    //使用mysql
    $ids = implode(',',array_keys($result['matches']));
    $conn = mysqli_connect('127.0.0.1','root','root');
    mysqli_query($conn,'set names utf8');
    mysqli_select_db($conn,'test');
    
    $sql = "select * from documents where id in (".$ids.")";
    
    $rst = mysqli_query($conn,$sql);
    
    //给匹配关键字添加样式
    $opts = array(
        'before_match'=>'<font style="font-weight:bold;color:#f00;">',
        'after_match'=>'</font>'
    );
    echo '<pre>';
    while($row = mysqli_fetch_assoc($rst)){
    
    
        $row2 = $sphinx->buildExcerpts($row,'test1',$keyword,$opts);//test1 配置文件中的主数据源索引
        print_r($row2);  
    }
    echo '</pre>';

結果:
ここに画像の説明を挿入
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/hgb24660/article/details/108941506