0

0

Laravel xunsearch 全文搜索

高洛峰

高洛峰

发布时间:2017-02-09 09:55:20

|

2861人浏览过

|

来源于php中文网

原创

开始之前强烈推荐先浏览一下 xunsearch 的官方文档

字狐AI
字狐AI

由GPT-4 驱动的AI全能助手,支持回答复杂问题、撰写邮件、阅读文章、智能搜索

下载

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

之后会显示安装的交互界面, 然后直接按下回车,安装到默认路径下,
然后喝杯咖啡, 稍等一会 出现下面的安装成功提示即可.

+==========================================+
| 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          |
+=================================================+

注意: 如果是生产环境iptables可能需要配置得严格,本文仅为测试

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

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

启动输出内容:

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

web服务器配置

安装xunsearch PHP SDK

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

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

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

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

;搜索配置文件示例
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

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

###################### 测试模块 ####################
/*
 * 全文搜索测试部分
 */
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) . "
" . $message . "
"; echo '
========
'; } 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); });

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

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

测试例子:

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

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

http://你的域名/makedoc/项目测试第三篇/俗话说,无三不成礼,所以就有了第三篇

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

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

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

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

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

通过上述步骤我们就完成了一个最简单的全文搜索例子.
如果希望了解更多详细内容, 请阅读xunsearch的官方文档.

参考内容

  1. xunsearch 官方文档


开始之前强烈推荐先浏览一下 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

之后会显示安装的交互界面, 然后直接按下回车,安装到默认路径下,
然后喝杯咖啡, 稍等一会 出现下面的安装成功提示即可.

+==========================================+
| 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          |
+=================================================+

注意: 如果是生产环境iptables可能需要配置得严格,本文仅为测试

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

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

启动输出内容:

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

web服务器配置

安装xunsearch PHP SDK

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

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

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

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

;搜索配置文件示例
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

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

###################### 测试模块 ####################
/*
 * 全文搜索测试部分
 */
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) . "
" . $message . "
"; echo '
========
'; } 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); });

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

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

测试例子:

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

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

http://你的域名/makedoc/项目测试第三篇/俗话说,无三不成礼,所以就有了第三篇

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

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

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

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

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

通过上述步骤我们就完成了一个最简单的全文搜索例子.
如果希望了解更多详细内容, 请阅读xunsearch的官方文档.

更多Laravel xunsearch 全文搜索 相关文章请关注PHP中文网!

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

58

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

52

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

24

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

10

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

7

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

406

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

231

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

194

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

150

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel---API接口
Laravel---API接口

共7课时 | 0.6万人学习

PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号