ホームページ  >  記事  >  バックエンド開発  >  Laravel xunsearch全文検索

Laravel xunsearch全文検索

高洛峰
高洛峰オリジナル
2017-02-09 09:55:202758ブラウズ

開始する前に、xunsearch の公式ドキュメントを参照することを強くお勧めします

Xunsearch の概要

Xunsearch は、高性能でフル機能の全文検索ソリューションです。
Xunsearch は、一般の開発者が既存の膨大なデータ用に独自の全文検索エンジンを迅速かつ簡単に構築できるように設計されています。

詳細については、ここをクリックしてください

テスト環境:

Linuxサーバー2:

コード 機能 IP システム
サーバーA Webサービスの提供 192.168. 56.2 centos7
サーバーB は、xunsearchバックエンドサービス 192.168.56.3 centos7

xunsearchバックエンドサーバー構成:

PHPバージョン7を提供します。 0.13 ではキャッシュがインストールされないため、運用環境に推奨されますキャッシュをインストールします

PHP 7.0.13 (cli) (built: Dec 21 2016 13:53:31) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans

サーバー B に接続します。次の手順を実行して、xunsearch インストール パッケージをインストールして解凍します

wget http://www.php.cn/
tar -xjf xunsearch-full-latest.tar.bz2

インストール スクリプトを実行し、プロンプトに従ってください。主に、xunsearch ソフトウェア パッケージのインストール ディレクトリを入力することを強くお勧めします。他のソフトウェア ディレクトリに混在させるのではなく、別のディレクトリを計画します。

cd xunsearch-full-1.4.10/
sh setup.sh

インストールの対話型インターフェイスが表示されます。Enter キーを直接押して、デフォルトのパスにインストールします。
その後、次のインストール成功プロンプトが表示されます。 : 運用環境の場合、iptables を厳密に構成する必要がある場合があります。

iptables を有効にしていない場合は、この操作を無視してください注意: 如果是生产环境iptables可能需要配置得严格,本文仅为测试

配置一下iptables, 如果你没有启用那么忽略本操作

+==========================================+
| Welcome to setup xunsearch(full)         |
| 欢迎使用 xunsearch (完整版) 安装程序       |
+------------------------------------------+
| Follow the on-screen instructions please |
| 请按照屏幕上的提示操作以完成安装            |
+==========================================+

Please specify the installation directory
请指定安装目录 (默认为中括号内的值)
[/usr/local/xunsearch]:

Confirm the installation directory
请确认安装目录:/usr/local/xunsearch [Y/n]Y
Checking scws ... no
Installing scws (1.2.3) ... 
Extracting scws package ...
Configuring scws ...
Compiling & installing scws ...
Checking scws dict ... no
Extracting scws dict file ... 
Checking libuuid ... no, try to install it
Extracting libuuid package ...
Configuring libuuid ...
Compiling & installing libuuid ...
Checking xapian-core-scws ... no
Installing xapian-core-scws (1.2.22) ... 
Extracting xapian-core-scws package ...
Configuring xapian-core-scws ...
Compiling & installing xapian-core-scws ...
Checking libevent ... no
Installing libevent (2.0.21-stable) ... 
Extracting libevent package ...
Configuring libevent ...
Compiling & installing libevent ...
Extracting xunsearch package (1.4.10) ...
Configuring xunsearch ...
Compiling & installing xunsearch ...
Cleaning ... done

+=================================================+
| Installation completed successfully, Thanks you |
| 安装成功,感谢选择和使用 xunsearch                |
+-------------------------------------------------+
| 说明和注意事项:                                  |
| 1. 开启/重新开启 xunsearch 服务程序,命令如下:    |
|    /usr/local/xunsearch/bin/xs-ctl.sh restart   |
|    强烈建议将此命令写入服务器开机脚本中             |
|                                                 |
| 2. 所有的索引数据将被保存在下面这个目录中:         |
|    /usr/local/xunsearch/data                    |
|    如需要转移到其它目录,请使用软链接。             |
|                                                 |
| 3. 您现在就可以在我们提供的开发包(SDK)基础上       |
|    开发您自己的搜索了。                           |
|    目前只支持 PHP 语言,参见下面文档:             |
|    /usr/local/xunsearch/sdk/php/README          |
+=================================================+

启动服务

vi /etc/sysconfig/iptables

加入, 下面两行

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8383 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8384 -j ACCEPT

重启iptables
service iptables restart

启动输出内容:

/usr/local/xunsearch/bin/xs-ctl.sh -b inet start

web服务器配置

安装xunsearch PHP SDK

INFO: starting server[xs-indexd] ... (BIND:8383)
INFO: starting server[xs-searchd] ... (BIND:8384)

创建项目配置文件, 一个项目对应一个配置文件, 项目名称不能重复

cd project/root/path
composer require --prefer-dist hightman/xunsearch

修改刚刚创建的文件的内容, 其中server.index 和 server.search 的IP地址是安装了xunsearch服务的服务器IP地址

cp app\vendor\hightman\xunsearch\app\demo.ini app\config\search-demo.ini

修改 app/routes/web.php 文件, 写入一些客户端搜索测试代码

;搜索配置文件示例
project.name = demo
project.default_charset = utf-8
server.index = 192.168.56.4:8383
server.search = 192.168.56.4:8384

[pid]
type = id

[subject]
type = title

[message]
type = body

[chrono]
type = numeric

使用浏览器访问上面两个路由来测试功能

通过访问: http://你的域名/makedoc/标题/内容 测试生成索引

测试例子:

###################### 测试模块 ####################
/*
 * 全文搜索测试部分
 */
Route::get('/search/{key}', function ($key){
    $xs = new XS(config_path('search-demo.ini'));
    $search = $xs->search; // 获取 搜索对象
    $query = $key;
    $search->setQuery($query)
        ->setSort('chrono', true) //按照chrono 正序排列
        ->setLimit(20,0) // 设置搜索语句, 分页, 偏移量
    ;

    $docs = $search->search(); // 执行搜索,将搜索结果文档保存在 $docs 数组中
    $count = $search->count(); // 获取搜索结果的匹配总数估算值
    foreach ($docs as $doc){
        $subject = $search->highlight($doc->subject); // 高亮处理 subject 字段
        $message = $search->highlight($doc->message); // 高亮处理 message 字段
        echo $doc->rank() . '. ' . $subject . " [" . $doc->percent() . "%] - ";
        echo date("Y-m-d", $doc->chrono) . "<br>" . $message . "<br>";
        echo '<br>========<br>';
    }
    echo  '总数:'. $count;
});

Route::get('/makedoc/{title}/{message}', function ($title, $message){
    $xs = new XS('demo');
    $doc = new XSDocument;
    $doc->setFields([
        'pid' => 1,
        'subject' => $title,
        'message' => $message,
        'chrono' => time(),
    ]); // 用数组进行批量赋值
    $xs->index->add($doc);
});

注意: 索引不是即时生效的 延迟大概在10秒左右

通过访问: http://你的域名/search/关键词 测试搜索功能
比如搜索关键词 项目

http://你的域名/makedoc/关于 xunsearch 的 DEMO 项目测试/项目测试是一个很有意思的行为!

http://你的域名/makedoc/测试第二篇/这里是第二篇文章的内容

http://你的域名/makedoc/项目测试第三篇/俗话说,无三不成礼,所以就有了第三篇
サービスを開始します。起動時の出力内容:

1. 关于 xunsearch 的 DEMO 项目测试 [99%] - 2011-08-26
项目测试是一个很有意思的行为!

========
2. 项目测试第三篇 [100%] - 2011-08-26
俗话说,无三不成礼,所以就有了第三篇

========
总数:2

webサーバーの設定xunsearch PHP SDKのインストール

PHP 7.0.13 (cli) (built: Dec 21 2016 13:53:31) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans

プロジェクト設定ファイルを作成します。プロジェクト名は重複できません
    wget http://www.php.cn/
    tar -xjf xunsearch-full-latest.tar.bz2
  1. 作成したファイルの内容を変更します。ここで、server.index と server.search の IP アドレスは次のとおりです。 xunsearch サービスのサーバー IP アドレスをインストールします

    cd xunsearch-full-1.4.10/
    sh setup.sh
    app/routes/web.php ファイルを変更し、クライアント検索テスト コードを作成します
  2. +==========================================+
    | Welcome to setup xunsearch(full)         |
    | 欢迎使用 xunsearch (完整版) 安装程序       |
    +------------------------------------------+
    | Follow the on-screen instructions please |
    | 请按照屏幕上的提示操作以完成安装            |
    +==========================================+
    
    Please specify the installation directory
    请指定安装目录 (默认为中括号内的值)
    [/usr/local/xunsearch]:
    
    Confirm the installation directory
    请确认安装目录:/usr/local/xunsearch [Y/n]Y
    Checking scws ... no
    Installing scws (1.2.3) ... 
    Extracting scws package ...
    Configuring scws ...
    Compiling & installing scws ...
    Checking scws dict ... no
    Extracting scws dict file ... 
    Checking libuuid ... no, try to install it
    Extracting libuuid package ...
    Configuring libuuid ...
    Compiling & installing libuuid ...
    Checking xapian-core-scws ... no
    Installing xapian-core-scws (1.2.22) ... 
    Extracting xapian-core-scws package ...
    Configuring xapian-core-scws ...
    Compiling & installing xapian-core-scws ...
    Checking libevent ... no
    Installing libevent (2.0.21-stable) ... 
    Extracting libevent package ...
    Configuring libevent ...
    Compiling & installing libevent ...
    Extracting xunsearch package (1.4.10) ...
    Configuring xunsearch ...
    Compiling & installing xunsearch ...
    Cleaning ... done
    
    +=================================================+
    | Installation completed successfully, Thanks you |
    | 安装成功,感谢选择和使用 xunsearch                |
    +-------------------------------------------------+
    | 说明和注意事项:                                  |
    | 1. 开启/重新开启 xunsearch 服务程序,命令如下:    |
    |    /usr/local/xunsearch/bin/xs-ctl.sh restart   |
    |    强烈建议将此命令写入服务器开机脚本中             |
    |                                                 |
    | 2. 所有的索引数据将被保存在下面这个目录中:         |
    |    /usr/local/xunsearch/data                    |
    |    如需要转移到其它目录,请使用软链接。             |
    |                                                 |
    | 3. 您现在就可以在我们提供的开发包(SDK)基础上       |
    |    开发您自己的搜索了。                           |
    |    目前只支持 PHP 语言,参见下面文档:             |
    |    /usr/local/xunsearch/sdk/php/README          |
    +=================================================+
ブラウザを使用して、上記 2 つのルートにアクセスして機能をテストします


アクセス: http://ドメイン名/makedoc/title/content インデックスを生成するテスト

テスト例:

vi /etc/sysconfig/iptables

加入, 下面两行

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8383 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8384 -j ACCEPT

重启iptables
service iptables restart

注:インデックスはすぐには反映されず、遅延は約 10 秒かかります

次の場所にアクセスして検索機能をテストします: http://ドメイン名/検索/キーワード

たとえば、次のように検索します。キーワード project について

/usr/local/xunsearch/bin/xs-ctl.sh -b inet start
上記の手順を完了しました。最も単純な全文検索の例です。
さらに詳しく知りたい場合は、xunsearch の公式ドキュメントを読んでください。

参考コンテンツ

xunsearch 公式ドキュメント開始する前に xunsearch を参照することを強くお勧めします 公式ドキュメント Xunsearch の概要Xunsearch は、高性能でフル機能の全文検索ソリューションです。 Xunsearch は、一般の開発者が既存の膨大なデータ用に独自の全文検索エンジンを迅速かつ簡単に構築できるように設計されています。 コード機能IPシステム
詳細については、ここをクリックしてください テスト環境: Linuxサーバー2:
🎜サーバーA🎜 🎜Webサービスの提供🎜🎜192.168. 56.2🎜🎜centos7🎜🎜🎜🎜サーバーB🎜🎜はxunsearchバックエンドサービスを提供します🎜🎜192.168.56.3🎜🎜centos7🎜🎜🎜🎜

xunsearch バックエンド サーバーの構成:

PHP バージョン 7.0.13 にはキャッシュがインストールされていません。本番環境にキャッシュをインストールすることをお勧めします。

PHP 7.0.13 (cli) (built: Dec 21 2016 13:53:31) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans

サーバー B に接続し、次の手順を実行してインストールし、解凍します。 xunsearch インストール パッケージ

wget http://www.php.cn/
tar -xjf xunsearch-full-latest.tar.bz2

インストール スクリプトを実行し、プロンプトに従い、主に xunsearch ソフトウェア パッケージのインストール ディレクトリを入力します。他のソフトウェア ディレクトリに混在させるのではなく、別のディレクトリを計画することを強くお勧めします。

cd xunsearch-full-1.4.10/
sh setup.sh

インストールの対話型インターフェイスが表示されます。Enter キーを直接押して、デフォルトのパスにインストールします。
その後、次のインストール成功プロンプトが表示されます。 : 運用環境の場合、iptables を厳密に構成する必要がある場合があります。

iptables を有効にしていない場合は、この操作を無視してください注意: 如果是生产环境iptables可能需要配置得严格,本文仅为测试

配置一下iptables, 如果你没有启用那么忽略本操作

+==========================================+
| Welcome to setup xunsearch(full)         |
| 欢迎使用 xunsearch (完整版) 安装程序       |
+------------------------------------------+
| Follow the on-screen instructions please |
| 请按照屏幕上的提示操作以完成安装            |
+==========================================+

Please specify the installation directory
请指定安装目录 (默认为中括号内的值)
[/usr/local/xunsearch]:

Confirm the installation directory
请确认安装目录:/usr/local/xunsearch [Y/n]Y
Checking scws ... no
Installing scws (1.2.3) ... 
Extracting scws package ...
Configuring scws ...
Compiling & installing scws ...
Checking scws dict ... no
Extracting scws dict file ... 
Checking libuuid ... no, try to install it
Extracting libuuid package ...
Configuring libuuid ...
Compiling & installing libuuid ...
Checking xapian-core-scws ... no
Installing xapian-core-scws (1.2.22) ... 
Extracting xapian-core-scws package ...
Configuring xapian-core-scws ...
Compiling & installing xapian-core-scws ...
Checking libevent ... no
Installing libevent (2.0.21-stable) ... 
Extracting libevent package ...
Configuring libevent ...
Compiling & installing libevent ...
Extracting xunsearch package (1.4.10) ...
Configuring xunsearch ...
Compiling & installing xunsearch ...
Cleaning ... done

+=================================================+
| Installation completed successfully, Thanks you |
| 安装成功,感谢选择和使用 xunsearch                |
+-------------------------------------------------+
| 说明和注意事项:                                  |
| 1. 开启/重新开启 xunsearch 服务程序,命令如下:    |
|    /usr/local/xunsearch/bin/xs-ctl.sh restart   |
|    强烈建议将此命令写入服务器开机脚本中             |
|                                                 |
| 2. 所有的索引数据将被保存在下面这个目录中:         |
|    /usr/local/xunsearch/data                    |
|    如需要转移到其它目录,请使用软链接。             |
|                                                 |
| 3. 您现在就可以在我们提供的开发包(SDK)基础上       |
|    开发您自己的搜索了。                           |
|    目前只支持 PHP 语言,参见下面文档:             |
|    /usr/local/xunsearch/sdk/php/README          |
+=================================================+

启动服务

vi /etc/sysconfig/iptables

加入, 下面两行

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8383 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8384 -j ACCEPT

重启iptables
service iptables restart

启动输出内容:

/usr/local/xunsearch/bin/xs-ctl.sh -b inet start

web服务器配置

安装xunsearch PHP SDK

INFO: starting server[xs-indexd] ... (BIND:8383)
INFO: starting server[xs-searchd] ... (BIND:8384)

创建项目配置文件, 一个项目对应一个配置文件, 项目名称不能重复

cd project/root/path
composer require --prefer-dist hightman/xunsearch

修改刚刚创建的文件的内容, 其中server.index 和 server.search 的IP地址是安装了xunsearch服务的服务器IP地址

cp app\vendor\hightman\xunsearch\app\demo.ini app\config\search-demo.ini

修改 app/routes/web.php 文件, 写入一些客户端搜索测试代码

;搜索配置文件示例
project.name = demo
project.default_charset = utf-8
server.index = 192.168.56.4:8383
server.search = 192.168.56.4:8384

[pid]
type = id

[subject]
type = title

[message]
type = body

[chrono]
type = numeric

使用浏览器访问上面两个路由来测试功能

通过访问: http://你的域名/makedoc/标题/内容 测试生成索引

测试例子:

###################### 测试模块 ####################
/*
 * 全文搜索测试部分
 */
Route::get('/search/{key}', function ($key){
    $xs = new XS(config_path('search-demo.ini'));
    $search = $xs->search; // 获取 搜索对象
    $query = $key;
    $search->setQuery($query)
        ->setSort('chrono', true) //按照chrono 正序排列
        ->setLimit(20,0) // 设置搜索语句, 分页, 偏移量
    ;

    $docs = $search->search(); // 执行搜索,将搜索结果文档保存在 $docs 数组中
    $count = $search->count(); // 获取搜索结果的匹配总数估算值
    foreach ($docs as $doc){
        $subject = $search->highlight($doc->subject); // 高亮处理 subject 字段
        $message = $search->highlight($doc->message); // 高亮处理 message 字段
        echo $doc->rank() . '. ' . $subject . " [" . $doc->percent() . "%] - ";
        echo date("Y-m-d", $doc->chrono) . "<br>" . $message . "<br>";
        echo '<br>========<br>';
    }
    echo  '总数:'. $count;
});

Route::get('/makedoc/{title}/{message}', function ($title, $message){
    $xs = new XS('demo');
    $doc = new XSDocument;
    $doc->setFields([
        'pid' => 1,
        'subject' => $title,
        'message' => $message,
        'chrono' => time(),
    ]); // 用数组进行批量赋值
    $xs->index->add($doc);
});

注意: 索引不是即时生效的 延迟大概在10秒左右

通过访问: http://你的域名/search/关键词 测试搜索功能
比如搜索关键词 项目

http://你的域名/makedoc/关于 xunsearch 的 DEMO 项目测试/项目测试是一个很有意思的行为!

http://你的域名/makedoc/测试第二篇/这里是第二篇文章的内容

http://你的域名/makedoc/项目测试第三篇/俗话说,无三不成礼,所以就有了第三篇
サービスを開始します。起動時の出力内容:

1. 关于 xunsearch 的 DEMO 项目测试 [99%] - 2011-08-26
项目测试是一个很有意思的行为!

========
2. 项目测试第三篇 [100%] - 2011-08-26
俗话说,无三不成礼,所以就有了第三篇

========
总数:2

webサーバーの設定xunsearch PHP SDKのインストール

PHP 7.0.13 (cli) (built: Dec 21 2016 13:53:31) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans
プロジェクト設定ファイルを作成します。プロジェクト名は重複できません

wget http://www.php.cn/
tar -xjf xunsearch-full-latest.tar.bz2
作成したファイルの内容を変更します。ここで、server.index と server.search の IP アドレスは次のとおりです。 xunsearch サービスのサーバー IP アドレスをインストールします🎜
cd xunsearch-full-1.4.10/
sh setup.sh
🎜 app/routes/web.php ファイルを変更し、クライアント検索テスト コードを作成します🎜
+==========================================+
| Welcome to setup xunsearch(full)         |
| 欢迎使用 xunsearch (完整版) 安装程序       |
+------------------------------------------+
| Follow the on-screen instructions please |
| 请按照屏幕上的提示操作以完成安装            |
+==========================================+

Please specify the installation directory
请指定安装目录 (默认为中括号内的值)
[/usr/local/xunsearch]:

Confirm the installation directory
请确认安装目录:/usr/local/xunsearch [Y/n]Y
Checking scws ... no
Installing scws (1.2.3) ... 
Extracting scws package ...
Configuring scws ...
Compiling & installing scws ...
Checking scws dict ... no
Extracting scws dict file ... 
Checking libuuid ... no, try to install it
Extracting libuuid package ...
Configuring libuuid ...
Compiling & installing libuuid ...
Checking xapian-core-scws ... no
Installing xapian-core-scws (1.2.22) ... 
Extracting xapian-core-scws package ...
Configuring xapian-core-scws ...
Compiling & installing xapian-core-scws ...
Checking libevent ... no
Installing libevent (2.0.21-stable) ... 
Extracting libevent package ...
Configuring libevent ...
Compiling & installing libevent ...
Extracting xunsearch package (1.4.10) ...
Configuring xunsearch ...
Compiling & installing xunsearch ...
Cleaning ... done

+=================================================+
| Installation completed successfully, Thanks you |
| 安装成功,感谢选择和使用 xunsearch                |
+-------------------------------------------------+
| 说明和注意事项:                                  |
| 1. 开启/重新开启 xunsearch 服务程序,命令如下:    |
|    /usr/local/xunsearch/bin/xs-ctl.sh restart   |
|    强烈建议将此命令写入服务器开机脚本中             |
|                                                 |
| 2. 所有的索引数据将被保存在下面这个目录中:         |
|    /usr/local/xunsearch/data                    |
|    如需要转移到其它目录,请使用软链接。             |
|                                                 |
| 3. 您现在就可以在我们提供的开发包(SDK)基础上       |
|    开发您自己的搜索了。                           |
|    目前只支持 PHP 语言,参见下面文档:             |
|    /usr/local/xunsearch/sdk/php/README          |
+=================================================+
🎜 ブラウザを使用して、上記 2 つのルートにアクセスして機能をテストします🎜🎜 アクセス: http://ドメイン名/makedoc/title/content インデックスを生成するテスト🎜🎜 テスト例:🎜
vi /etc/sysconfig/iptables

加入, 下面两行

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8383 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8384 -j ACCEPT

重启iptables
service iptables restart
🎜注:インデックスはすぐには反映されず、遅延は約 10 秒かかります🎜 🎜次の場所にアクセスして検索機能をテストします: http://ドメイン名/検索/キーワード 🎜たとえば、次のように検索します。キーワード project について🎜
/usr/local/xunsearch/bin/xs-ctl.sh -b inet start
🎜上記の手順を完了しました。最も単純な全文検索の例です。🎜さらに詳しく知りたい場合は、xunsearch の公式ドキュメントを読んでください。🎜🎜Forもっと見る Laravel xunsearch 全文検索関連記事は、PHP 中国語 Web サイトにご注意ください。 🎜🎜🎜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。