安基网 首页 脚本 PHP 查看内容

PHP+Sphinx 实现“全文搜索 ”功能 教程

2019-4-20 10:32| 投稿: xiaotiger |来自: 互联网


免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

摘要: 相信大家都知道PHP+Mysql是最佳的组合方式,虽然说mysql也可以做全文检索,但是效果就一般了。 如果你还想做优化,就更不能用mysql做全文检索了,为了解决这个问题,我们就需要用上:PHP+Mysql+Sphinx来实现。

相信大家都知道PHP+Mysql是最佳的组合方式,虽然说mysql也可以做全文检索,但是效果就一般了。 如果你还想做优化,就更不能用mysql做全文检索了,为了解决这个问题,我们就需要用上:PHP+Mysql+Sphinx来实现。

 

一、sphinx 简介

 

1、什么是sphinx

Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其他应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式 的XML数据。通过修改源代码,用户可以自行增加新的数据源(例如:其他类型的DBMS 的原生支持)

 

2、sphinx的特性

高速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒);

高性能的搜索(在2 – 4GB 的文本数据上,平均每次检索响应时间小于0.1秒);

可处理海量数据(目前已知可以处理超过100 GB的文本数据, 在单一CPU的系统上可 处理100 M 文档);

提供了优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法;

支持分布式搜索;

支持短语搜索;

提供文档摘要生成;

可作为MySQL的存储引擎提供搜索服务;

支持布尔、短语、词语相似度等多种检索模式;

文档支持多个全文检索字段(最大不超过32个);

文档支持多个额外的属性信息(例如:分组信息,时间戳等);

支持断词;

 

二、sphinx 安装

 

1、系统环境

我的实战环境是centos7.2 +lnmp一键安装包;

 

2、安装sphinx

//Linux命令块:

wget http://sphinxsearch.com/files/sphinx-2.2.11-release.tar.gz ##下载sphinx

tar -zxvf sphinx-2.2.11-release.tar.gz ##解压

cd sphinx-2.2.11-release

./configure --prefix=/usr/local/sphinx/

echo $?

make

echo $?

make install ##(这里为了方便查看每一步是否执行成功以及查看错误我把散步拆开了 (echo $? 返回数字0 执行成功 返回其他失败 )

 

 

3、安装 sphinx 可能遇见的错误

//Linux命令块:
##make错误
collect2: error: ld returned 1 exit status
make[2]: *** [indexer] Error 1
make[2]: Leaving directory `/root/sphinx-2.2.11-release/src'
make[1]: *** [all] Error 2 make[1]: Leaving directory `/root/sphinx-2.2.11-release/src' make: *** [all-recursive] Error 1
##解决办法 先执行 make clean,然后修改 configure 文件,把 #define USE_LIBICONV 0 最后的数值由1改为0

 

三、sphinx的配置以及测试小demo

sphinx安装成功后我们进入sphinx目录,会发现有这几个主要目录(bin、etc、var),其中:

  • bin存放索引启动文件;
  • etc存放sphinx配置文件;
  • var存放生成的索引文件;

 

1、我们先不着急去配置sphinx,首先我们需要在mysql数据库内创建建一些数据:

//mysql语句块:
CREATE TABLE IF NOT EXISTS `node` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `content` text NOT NULL,
  `created` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='测试文章表' AUTO_INCREMENT=11 ;

INSERT INTO `node` (`id`, `title`, `content`, `created`) VALUES
(1, '三月醉一场青春的流年', '三月,醉一场青春的流年。慢步在三月的春光里,走走停停,看花开嫣然,看春雨绵绵,感受春风拂面,春天,就是青春的流年。青春,是人生中最美的风景。青春,是一场花开的遇见', '2018-07-17 11:12:00'),
(2, '在爱的岁月山河里思念', '夜色如梦,没有人陪,坐在沙发里,一杯红酒配电影,似乎看透红尘,实际上钻心的孤独。远在他方的你,是否也一样在深夜里买醉?谁在爱的国度里,想念着谁?谁在梦里,与谁不醉不休?谁在寂寞的夜晚,想象着与谁缠绵悱恻?在爱的幸福国度,你就是我的唯一。', '2018-07-17 11:12:00'),
(3, 'php是世界上最好的语言', '女神:你能让这个知乎程序员板块的人都吵起来,我今晚就跟你走,但是提问不能问xx是不是最好的语言。程序员提问:“PHP是最好的语言”这个梗是怎么来的?女神:这能吵起来?程序员:走着瞧半小时后,知乎炸开了锅,数百回答讨论PHP的是是非非。女神:我了个去,这特么都行。服了,跟你回去就是了。程序员:不行,我一定要说服他们,PHP是最好的语言', '2018-07-17 11:12:00'),
(4, 'mysql', 'mysql is the best database?', '2018-07-17 11:12:00'),
(5, '夏色斑斓,夏意阑珊', '岁月,在风声里歌唱,一如往昔,撩起时光的衣裙。慢步在光阴的旷野,走走停停,看人来人往,看花开花谢,看日出日落。风景如画,往事如诗。那段凯歌,奏响风中的依恋,为你,为我,祭奠旧时的风景。相思豆,将你我的思念串成一个圆圈,你在地球的那头,我在地球的这头。', '2018-07-17 11:12:00'),
(6, '笔墨流芬芳,醉爱文字情', '文字,是一米阳光,温暖着我的心。阳光明媚,我在阳光里享受着它的融融暖意。文字,发着光,发着热,让我的灵魂不再四处漂游。文字,好暖,让我结冰的心湖慢慢融化。阳光,让早已心如死灰的心感受到从未有过的温暖。只要抓住那一米阳光,就等于抓住了一颗救命稻草', '2018-07-17 11:12:00'),
(7, '冬风中一朵紫罗兰', '当时我在窗前。窗里光线幽暗,冷冷清清,窗玻璃紧紧地闭着,木头的窗棂子似乎不堪冷风的肆虐有些瑟瑟发抖,这一切让我原本晦暗的心情更加晦暗,失落的灵魂更加无着无落了。', '2018-07-17 11:12:00'),
(8, '我在红尘中等你', '在这红尘里,我渴望陪你变老,不求一路轰轰烈烈,只愿一世倾心,像山野花儿把最后的生命情葬在秋天,因为你为梦想去漂泊,去了遥远的他乡,我后悔没有与你同行,致使离我而去,你知道我喜欢家乡的宁静,喜欢云的淡然恬静,喜欢山色的空蒙幽深,我喜欢握那一只短笛,诉说心中忧郁,想想走过的人生路,曾经说过相伴一生的你,如今去了南方,那些曾经许下的诺言,早已风吹云散。曾经的温暖,美好的记忆,也许只是一个转身的距离,让我在红尘中等你,今生是如何的结局。', '2018-07-17 11:12:00'),
(9, '阳光的滋味', '明眸善睐,云袖轻舒,花影婆娑,夜鸟伏声。望月,终团圆。融化一季相思苦楚,泪凝妙目。开襟解怀,邀月畅饮。一季愁情尽遣。蘸墨狂书,满腹恩爱无度。羞愧了月里仙子,忧郁了河汉星辰。明月缱惓,夜色飘香。尝遍了相思苦涩,领略这相聚欢欣。', '2018-07-17 11:12:00'),
(10, '走在迷途的拾荒人', '时光就像一个美少女,在低眉浅笑中,就将有些人一些事隔到了光阴的对面。其实光阴从不曾厚过谁也不曾薄过谁,生活就是一种积累,你若储存的温暖多,你的生活就会阳光明媚,你若储存太多寒凉,你的生活就会阴云密布。放下烦恼与忧愁,带着最美的微笑出发,脚下路在,前方希望在,回眸处爱与温暖一直都在。', '2018-07-17 11:12:00');

 

2、打开sphinxd的配置文件:

#Linux命令块:
cd etc 
vim sphinx.conf.dist

 

3、接下来开始我们对sphinxd做一些配置设置:

由于配置比较多,我就以图片的方式来展示出来吧!具体的配置如下:

 

 

 

 

 

 

 

Tag标签: PHP Sphinx 全文搜索

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

本文出自:https://www.fujieace.com/php/sphinx.html

免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

 最新
返回顶部