ホームページ >バックエンド開発 >PHPチュートリアル >Laravel xunsearch全文検索
開始する前に、xunsearch の公式ドキュメントを参照することを強くお勧めします
Xunsearch は、高性能でフル機能の全文検索ソリューションです。
Xunsearch は、一般の開発者が既存の膨大なデータ用に独自の全文検索エンジンを迅速かつ簡単に構築できるように設計されています。
詳細については、ここをクリックしてください
コード | 機能 | IP | システム |
---|---|---|---|
サーバーA | Webサービスの提供 | 192.168. 56.2 | centos7 |
サーバーB | は、xunsearchバックエンドサービス | 192.168.56.3 | centos7 |
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
安装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
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
cd xunsearch-full-1.4.10/ sh setup.shapp/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 | +=================================================+
アクセス: 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://ドメイン名/検索/キーワードさらに詳しく知りたい場合は、xunsearch の公式ドキュメントを読んでください。参考コンテンツ xunsearch 公式ドキュメントたとえば、次のように検索します。キーワード
project
について/usr/local/xunsearch/bin/xs-ctl.sh -b inet start上記の手順を完了しました。最も単純な全文検索の例です。
開始する前に xunsearch を参照することを強くお勧めします 公式ドキュメント | Xunsearch の概要 | ||
---|---|---|---|
詳細については、ここをクリックしてください | テスト環境: | Linuxサーバー2: | |
機能 | IP | システム |
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
安装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
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 サイトにご注意ください。 🎜🎜🎜