总结
豆包 AI 助手文章总结

PHP+Sphinx+Mysql开发搜索引擎详细实例讲解

韦小宝
发布: 2018-02-10 10:39:56
原创
6714人浏览过

大家听到搜索引擎都会感觉很难写,一点思路都没有,其实php也可以做搜索引擎的开发,不过php需要结合sphinx和mysql才可以开发出我们想要的搜索引擎,想了解php是如何进行搜索引擎开发的嘛!一起来看看吧!!

首先我们下载Sphinx这个工具,下载地址官网下载地址:www.sphinxsearch.com,找到sphinx-2.2.10-release-win64.zip,64位的下载这个,解压到我们的PHP运行目录下面,为后面网页查看结果方便。

sphinx介绍:

Sphinx 是SQL Phrase Index(查询词组索引)的缩写,Sphinx是一个基于SQL的全文检索引擎,它提供的API接口包括:PHP,Python,Perl,Ruby,java等,同时为MySQL也设计了一个引擎插件SphinxSE,它是一个分布式的全文检索系统。
优点:
  高速的建立索引可达到10M/s
  高性能的搜索(在2-4G的文本数据上,平均每次检索响应的时间小于0.1秒)
  可处理海量数据(目前已知可以处理100G的文本数据,在单一的CPU的系统上可处理100M的文档)
  提供的优秀的相关度算法,基于短语相似度和统计BM2的复合Ranking的方法
  支持分布式搜索
  提供文档片段生成功能
  可作为Mysql的存储引擎提供搜索服务
  支持布尔,短语,词语相似度等多种检索模式
缺点:
 必须要有主键
 主键必须为整数
 不负责数据存储
 配置不灵活

解压之后的sphinx结构如图所示:

立即学习PHP免费学习笔记(深入)”;


下面就是进行我们的相关配置,看到图中的sphinx-min.conf.in,复制到我们的bin目录下面方便一会使用改名字为sphinx.conf,

修改里面的内容:

source src1
{
	type			= mysql

	sql_host		= localhost #主机地址
	sql_user		= root#帐号
	sql_pass		=     #密码
	sql_db			= sphinx  #数据库
	sql_port		= 3306	# 数据库端口 3306
	sql_query		= SELECT id, name, age FROM users #查询语句
	sql_attr_uint		= group_id
	sql_attr_timestamp	= date_added
	sql_query_pre = set names utf8   #数据库编码
}


index test1
{
	source			= src1
	path			= D:/myapaphe/www/sphinx/data #这个一定要配置
	charset_type = utf-8 #指定编码
	ngram_len = 1        #要找中文需指定为1.
	ngram_chars = U+3000..U+2FA1F
	
}

indexer
{
	mem_limit		= 128M
}
searchd
{
	listen			= 9312
	listen			= 9306:mysql41
	log			= D:\myapaphe\www\sphinx\log\searchd.log  #进程日志
	query_log		= D:\myapaphe\www\sphinx\log\query.log    #查询日志

	read_timeout		= 5
	max_children		= 30
	pid_file		= D:\myapaphe\www\sphinx\log\searchd.pid 
	seamless_rotate		= 1
	preopen_indexes		= 1
	unlink_old		= 1
	workers			= threads # for RT to work
	binlog_path		= D:\myapaphe\www\sphinx\data
}
登录后复制

上面这些一定要配置完毕,路径一定要符合自己的路径。

接下来生成查询索引:


安装searchd服务:


接下来加载配置文件


启动服务:


OK前面的配置工作,以及服务启动已经完成现在开始代码:

在sphinx下面的api文件夹下面创建test3.php,运行test3.php

<?php 
require ( "sphinxapi.php" );
$s = new SphinxClient();
$s->SetServer('localhost',9312);
$result = $s->Query('高七');
echo '<pre class="brush:php;toolbar:false">';
print_r($result);
登录后复制


乱码是因为cmd默认是gbk编码,我们放到浏览器中去查看:


我们看到sphinx查到的并不是完整的结果而是把id返给了我们,让我们根据id再去查数据。

下面进行查询时间比对:


我是在4万多条数据测试的时间是0.001s,我们看下mysql的查询需要多久:


我们看到需要0.04s,数据不多,结果没有那么明显,不过0.039s的差距已经不小了。

到此sphinx的整合到此完毕,希望可以帮到大家。

相关推荐:

php 对现有搜索引擎的调用详解

php 判断访客是否为搜索引擎蜘蛛的函数代码

以上就是PHP+Sphinx+Mysql开发搜索引擎详细实例讲解的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
豆包 AI 助手文章总结
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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