百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

ThinkPHP5 使用迅搜 (XunSearch) 实现全文检索的安装以及使用教程

yuyutoo 2024-11-16 02:38 3 浏览 0 评论

近期有朋友说应用的数据库数据过多,使用mysql原生的查询很慢,问有没有解决的方式,于是就有了这一篇记录文。

讯搜(XunSearch)可以帮助一般开发者针对既有的海量数据,快速而方便地建立自己的全文搜索引擎。全文检索可以帮助您降低服务器搜索负荷、极大程度的提高搜索速度和用户体验。

优点是:

1、后端是采用 C/C++ 开发多线程服务端,索引设计基于 Xapian 和 scws 中文分词。单库最多支持 40 亿条数据,在 5 亿网页大约 1.5TB 的数据中检索时间不超过 1 秒(非缓存)

2、除支持基础的自定义分词、字段检索、布尔搜索外,还直接支持用户急需的相关搜索、拼音搜索、搜索建议等专业功能。

一、安装教程

Xunsearch PHP-SDK 是与 xunsearch 后端服务协同工作的,所以后先必须先在您的服务器 上安装服务端,服务器操作系统要求必须是 Linux、BSD 或其它类 UNIX 系统,同时安装了 gcc、make 等基础编译环境。这里使用的是Linux系统。安装步骤如下:

1、进入想把XunSearch安装的目录(你也可以自定义)

cd /usr/local/

2、运行下面指令下载、解压安装包

wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2 tar -xjf xunsearch-full-latest.tar.bz2

3、执行安装脚本,根据提示进行操作,主要是输入 xunsearch 软件包的安装目录,建议单独规划一个目录,而不是混到别的软件目录中。

cd xunsearch-full-1.4.15/ sh setup.sh

4、待命令运行结束后,如果没有出错中断,则表示顺利安装完成,使用下面指令即可启动。

/usr/local/xunsearch/bin/xs-ctl.sh restart

PS:如果该程序和应用程序不在一个服务器上面,则使用下面的指令启动,并放行8383与8384端口。

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

5、设置开机启动。

将脚本指令 "/usr/local/xunsearch/bin/xs-ctl.sh -b inet start"写进 "/etc/rc.local" 文件,然后保存退出即可。

PS:安装中可能会出现一些常见的错误,我们后面的章节记录一下。

二、Thinkphp5使用讯搜(XunSearch)查询数据

1、将上面服务器安装好的讯搜目录中SDK 代码整个目录复制到相应的服务器上,放在app/extends/文件夹下面。

2、配置SDK目录中app/demo.ini中的配置参数改成与需要全文检索的字段相对应(需要注意字段的属性以及服务器参数配置)。

string 字符型,适用多数情况,也是默认值

numeric 数值型,包含整型和浮点数,仅当字段需用于以排序或区间检索时才设为该类型,否则请使用 string?即可

date 日期型,形式为 YYYYmmdd 这样固定的 8 字节,如果没有区间检索或排序需求不建议使用

id 主键型,确保每条数据具备唯一值,是索引更新和删除的凭据,每个搜索项目必须有且仅有一个 id 字段,该字段的值不区分大小写

title 标题型,标题或名称字段,至多有一个该类型的字段

body 内容型,主内容字段, 即本搜索项目中内容最长的字段,至多只有一个该类型字段,本字段不支持字段检索

3、添加数据至索引库

require_once CONF_PATH.'../extend/sdk/php/lib/XS.php';

$xs = new \XS('demo'); // 创建 XS 对象,项目名称为:demo

$index = $xs->index; // 获取索引对象

$data = array(

'pid' => 234, // 此字段为主键,必须指定

'subject' => '测试文档的标题',

'message' => '测试文档的内容部分',

'chrono' => time() ); // 创建文档对象

$doc = new \XSDocument;

$doc->setFields($data); // 添加到索引数据库中

$index->add($doc);

4、使用讯搜(XunSearch)查询数据

require_once CONF_PATH.'../extend/sdk/php/lib/XS.php';

$xs = new \XS('demo'); // 创建 XS 对象,项目名称为:demo

$search= $xs->search; // 获取搜索对象

$query = '项目测试'; // 这里的搜索语句很简单,就一个短语

$search->setQuery($query); // 设置搜索语句

$search->addWeight('subject', 'xunsearch'); // 增加附加条件:提升标题中包含 'xunsearch' 的记录的权重

$search->setLimit(5, 10); // 设置返回结果最多为 5 条,并跳过前 10 条

$docs = $search->search(); // 执行搜索,将搜索结果文档保存在 $docs 数组中

$count = $search->count(); // 获取搜索结果的匹配总数估算值

你也可以使用串接操作:

$docs = $search->setQuery('项目测试')->addWeight('subject', 'xunsearch')->setLimit(5, 10)->search();

你可以使用print_r来查看返回的数据。

相关推荐

史上最全的浏览器兼容性问题和解决方案

微信ID:WEB_wysj(点击关注)◎◎◎◎◎◎◎◎◎一┳═┻︻▄(页底留言开放,欢迎来吐槽)●●●...

平面设计基础知识_平面设计基础知识实验收获与总结
平面设计基础知识_平面设计基础知识实验收获与总结

CSS构造颜色,背景与图像1.使用span更好的控制文本中局部区域的文本:文本;2.使用display属性提供区块转变:display:inline(是内联的...

2025-02-21 16:01 yuyutoo

写作排版简单三步就行-工具篇_作文排版模板

和我们工作中日常word排版内部交流不同,这篇教程介绍的写作排版主要是用于“微信公众号、头条号”网络展示。写作展现的是我的思考,排版是让写作在网格上更好地展现。在写作上花费时间是有累积复利优势的,在排...

写一个2048的游戏_2048小游戏功能实现

1.创建HTML文件1.打开一个文本编辑器,例如Notepad++、SublimeText、VisualStudioCode等。2.将以下HTML代码复制并粘贴到文本编辑器中:html...

今天你穿“短袖”了吗?青岛最高23℃!接下来几天气温更刺激……

  最近的天气暖和得让很多小伙伴们喊“热”!!!  昨天的气温到底升得有多高呢?你家有没有榜上有名?...

CSS不规则卡片,纯CSS制作优惠券样式,CSS实现锯齿样式

之前也有写过CSS优惠券样式《CSS3径向渐变实现优惠券波浪造型》,这次再来温习一遍,并且将更为详细的讲解,从布局到具体样式说明,最后定义CSS变量,自定义主题颜色。布局...

柠檬科技肖勃飞:大数据风控助力信用社会建设

...

你的自我界限够强大吗?_你的自我界限够强大吗英文

我的结果:A、该设立新的界限...

行内元素与块级元素,以及区别_行内元素和块级元素有什么区别?

行内元素与块级元素首先,CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,分别为块级(block)、行内(inline)。块级元素:(以下列举比较常...

让“成都速度”跑得潇潇洒洒,地上地下共享轨交繁华
让“成都速度”跑得潇潇洒洒,地上地下共享轨交繁华

去年的两会期间,习近平总书记在参加人大会议四川代表团审议时,对治蜀兴川提出了明确要求,指明了前行方向,并带来了“祝四川人民的生活越来越安逸”的美好祝福。又是一年...

2025-02-21 16:00 yuyutoo

今年国家综合性消防救援队伍计划招录消防员15000名

记者24日从应急管理部获悉,国家综合性消防救援队伍2023年消防员招录工作已正式启动。今年共计划招录消防员15000名,其中高校应届毕业生5000名、退役士兵5000名、社会青年5000名。本次招录的...

一起盘点最新 Chrome v133 的5大主流特性 ?

1.CSS的高级attr()方法CSSattr()函数是CSSLevel5中用于检索DOM元素的属性值并将其用于CSS属性值,类似于var()函数替换自定义属性值的方式。...

竞走团体世锦赛5月太仓举行 世界冠军杨家玉担任形象大使

style="text-align:center;"data-mce-style="text-align:...

学物理能做什么?_学物理能做什么 卢昌海

作者:曹则贤中国科学院物理研究所原标题:《物理学:ASourceofPowerforMan》在2006年中央电视台《对话》栏目的某期节目中,主持人问过我一个的问题:“学物理的人,如果日后不...

你不知道的关于这只眯眼兔的6个小秘密
你不知道的关于这只眯眼兔的6个小秘密

在你们忙着给熊本君做表情包的时候,要知道,最先在网络上引起轰动的可是这只脸上只有两条缝的兔子——兔斯基。今年,它更是迎来了自己的10岁生日。①关于德艺双馨“老艺...

2025-02-21 16:00 yuyutoo

取消回复欢迎 发表评论: