搜索到这篇文章的人大多都应该已经知道 迅搜(xunsearch) 是什么。
迅搜(xunsearch)是采用 C/C++ 基于 xapian 和 scws 开发的全文搜索引擎解决方案,适用于php全文检索、mysql全文检索和各种站内搜索。
我原来做了一个小站,抓了很多很多文章,放到mysql中进行 like 搜索的效率是很低很低的,所以考虑了用迅搜,搜索引擎中只存了文章id、标题、tag、描述、文章分类、然后根据索引的文章id再到 mysql 读取文章内容。原来用了 RPC ,后来就没有那么多机器了 😰😭😵 那直接来吧。
先听一首 Jeremy Lim 的 Into Ether (Original Mix) 压压惊呐!
- 安装
我是在 CentOs 下进行安装的,其实迅搜的教程挺详细的。我只是简化了一下。吧?
1.运行下面指令下载、解压安装包。
wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m36ito0m-1608782486644)(https://ojv5ow1um.qnssl.com/xunsearch001.png)]
2.进入xunsearch-full-1.4.9目录,执行setup.sh文件
./setup.sh //执行安装命令
默认安装目录:/usr/local/xunsearch
3.安装完成:
vim /etc/rc.d/rc.local //添加开机启动
/usr/local/xunsearch/bin/xs-ctl.sh -b inet restart //将此命令写入开机启动
搜索系统将所有数据保存在 /usr/local/xunsearch/data 目录中。如果您希望数据目录另行安排或转移至其它分区,请将 /usr/local/xunsearch/data 作为软链接指向真实目录。
软连接到:/data/xunsearch/data
ln -s /data/xunsearch/data /usr/local/xunsearch/data
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4vLvn8ZI-1608782486647)(https://ojv5ow1um.qnssl.com/xunsearch002.png)]
Info: 出于性能和多数需求考虑 xunsearch 服务端和 SDK API 通讯时没有加密和验证处理, 并且默认情况 xs-ctl.sh 启动的服务程序是绑定并监听在 127.0.0.1 上。
如果您的 SDK 调用和 xunsearch 服务端不在同一服务器,请使用 -b inet 方式启动脚本, 并注意借助类似 iptables 的防火墙来控制 xunsearch 的 8383/8384 两个端口的访问权限。 启动脚本用法举例如下,以下均为合法使用方式:
- bin/xs-ctl.sh -b local start // 监听在本地回环地址 127.0.0.1 上
- bin/xs-ctl.sh -b inet start // 监听在所有本地 IP 地址上
- bin/xs-ctl.sh -b a.b.c.d start // 监听在指定 IP 上
- bin/xs-ctl.sh -b unix start // 分别监听在 tmp/indexd.sock 和 tmp/searchd.sock
4.启动讯搜服务:
/usr/local/xunsearch/bin/xs-ctl.sh start
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mt69bcX7-1608782486654)(https://ojv5ow1um.qnssl.com/xunsearch003.png)]
检测你的服务器是否符合讯搜的最低要求:(PHP执行)
php /usr/local/xunsearch/sdk/php/util/RequiredCheck.php
5.根据字段配置.ini文件
http://www.xunsearch.com/tools/iniconfig参考文档项目配置详解内容。
ini文件路径:/usr/local/xunsearch/sdk/php/app/article.ini
project.name = article
project.default_charset = utf-8
[id]
type = id
[title]
type = title
[desc]
type = body
[tags]
index = both
weight = 4
[cate]
index = both
weight = 3
6.索引管理工具——Indexer(用PHP去执行sdk)
- *# 清空 demo 项目的索引数据 *
util/Indexer.php --clean demo - # 导入 JSON 数据文件 file.json 到 demo 项目
util/Indexer.php --source=json demo file.json - # 导入 MySQL 数据库的 dbname.tbl_post 表到 demo 项目中,并且平滑重建
util/Indexer.php --rebuild --source=mysql://root:pass@localhost/dbname --sql=“SELECT * FROM tbl_post” --project=demo - # 查看 demo 项目在服务端的相关信息
util/Indexer.php --info -p demo - # 强制刷新 demo 项目的搜索日志
util/Indexer.php --flush-log --project demo - # 强制停止重建
util/Indexer.php --stop-rebuild demo
根据mysql导入数据
#util/Indexer.php --rebuild --source=mysql://root:password@localhost/dbname --sql=“SELECT id,title,category,tags,description,cate_id,add_time FROM gzy_article” --project=article
操作类详见github: https://github.com/auto0010/xunsearch