windows下安装 sphinx 数据库全文搜索引擎
此次演示的环境是:win7系统,64位,php5.4.x,apache
sphinx,斯芬克斯(英语不好的同学可以直接读这个音),意狮身人面像
特点:创建索引速度快,3分钟左右能创建100万条记录的索引;检索速度快,1000万的记录检索速度在毫秒级上;为很多脚本语言设计了检索API;专门为php设计了存储引擎插件。
1. 去 sphinx官网 下载一个版本,在 http://sphinxsearch.com/downloads/archive/ 页面下载以前的版本。我下载是 Win64 binaries w/MySQL+id64 support。(注意:要选择适合自己本地环境的版本)
(建议初学者别下载最新的版本,因为最新的版本资料少,出了问题初学者自己还解决不了,容易打击学习的信心)。
2. 直接解压到一个目录里,如 D:\sphinx ,新建两个文件夹,data和log。目录结构如下图:
3. 移动配置:将"sphinx-min.conf.in"复制到bin目录下,并改名为 "sphinx.conf"。(sphinx-min.conf.in和sphinx.conf.in的区别在于前者将后者存在的注释全去掉了,在我看来,这样更直观简单,注释太多的话,压力太大)
4. 修改配置:打开"sphinx.conf",根据实际情况修改配置。
配置文件总共分为1个source,名为src1,也就是数据源;2个index,test1和testrt,表示索引;1个indexer,猜测是indexer命令的配置项;1个searchd,猜测是searchd命令的配置项。
a. 数据源配置。
就是配置数据库host,user,pass等等之类的,相信大家已经很熟了。sql_query就是一句select语句。sql_attr_xxx表示数据表的字段的属性,主要用于过滤和排序。
如果数据库是utf8,在sql_port下加一行"sql_query_pre = SET NAMES utf8 "
另外将配置文件所有的 "@CONFDIR@" (表示配置目录)替换为 "D:/sphinx"。
下面是修改后的配置文件

1 # 2 # Minimal Sphinx configuration sample (clean, simple, functional) 3 # 4 5 source src1 6 { 7 type = mysql 8 9 sql_host = localhost 10 sql_user = root 11 sql_pass = root 12 sql_db = test 13 sql_port = 3306 14 15 #如果数据库是utf编码 16 sql_query_pre = SET NAMES utf8 17 18 sql_query = \ 19 SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \ 20 FROM documents 21 22 sql_attr_uint = group_id 23 sql_attr_timestamp = date_added 24 } 25 26 27 index test1 28 { 29 source = src1 30 path = D:/sphinx/data/test1 31 } 32 33 34 index testrt 35 { 36 type = rt 37 rt_mem_limit = 128M 38 39 path = D:/sphinx/data/testrt 40 41 rt_field = title 42 rt_field = content 43 rt_attr_uint = gid 44 } 45 46 47 indexer 48 { 49 mem_limit = 128M 50 } 51 52 53 searchd 54 { 55 listen = 9312 56 listen = 9306:mysql41 57 log = D:/sphinx/log/searchd.log 58 query_log = D:/sphinx/log/query.log 59 read_timeout = 5 60 max_children = 30 61 pid_file = D:/sphinx/log/searchd.pid 62 seamless_rotate = 1 63 preopen_indexes = 1 64 unlink_old = 1 65 workers = threads # for RT to work 66 binlog_path = D:/sphinx/data 67 }
5. 导入 "example.sql" 到数据库。(注意:该数据库就是上面配置中的数据库)
6. 打开CMD窗口:进入bin目录,shift+鼠标右键,选择"在此处打开命令窗口",进入cmd窗口。
7. 建立索引:在cmd命令行中输入 indexer.exe --all
8. 开启searchd服务:在cmd命令行下输入 searchd.exe
9. 成功后测试:
a. 在D:\sphinx\api下写一个foo.php;
1 <?php 2 3 require_once 'sphinxapi.php'; 4 5 $s = new SphinxClient(); 6 $s->setServer('localhost', 9312); 7 $result = $s->Query('number'); //搜索"number"字符串 8 9 print_r($result);
b. 执行这个foo.php;
在cmd命令输入 php D:\sphinx\api\foo.php ,结果如下

1 Array 2 ( 3 [error] => 4 [warning] => 5 [status] => 0 6 [fields] => Array 7 ( 8 [0] => title 9 [1] => content 10 ) 11 12 [attrs] => Array 13 ( 14 [group_id] => 1 15 [date_added] => 2 16 ) 17 18 [matches] => Array 19 ( 20 [1] => Array 21 ( 22 [weight] => 1442 23 [attrs] => Array 24 ( 25 [group_id] => 1 26 [date_added] => 1476926888 27 ) 28 29 ) 30 31 [2] => Array 32 ( 33 [weight] => 1442 34 [attrs] => Array 35 ( 36 [group_id] => 1 37 [date_added] => 1476926888 38 ) 39 40 ) 41 42 [4] => Array 43 ( 44 [weight] => 1442 45 [attrs] => Array 46 ( 47 [group_id] => 2 48 [date_added] => 1476926888 49 ) 50 51 ) 52 53 ) 54 55 [total] => 3 56 [total_found] => 3 57 [time] => 0.000 58 [words] => Array 59 ( 60 [number] => Array 61 ( 62 [docs] => 3 63 [hits] => 3 64 ) 65 66 ) 67 68 )
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律