windows下安装 sphinx 数据库全文搜索引擎

时间:2023-03-09 19:14:14
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。目录结构如下图:

  windows下安装 sphinx 数据库全文搜索引擎

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"。

  下面是修改后的配置文件

     #
# Minimal Sphinx configuration sample (clean, simple, functional)
# source src1
{
type = mysql sql_host = localhost
sql_user = root
sql_pass = root
sql_db = test
sql_port = 3306 #如果数据库是utf编码
sql_query_pre = SET NAMES utf8 sql_query = \
SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \
FROM documents sql_attr_uint = group_id
sql_attr_timestamp = date_added
} index test1
{
source = src1
path = D:/sphinx/data/test1
} index testrt
{
type = rt
rt_mem_limit = 128M path = D:/sphinx/data/testrt rt_field = title
rt_field = content
rt_attr_uint = gid
} indexer
{
mem_limit = 128M
} searchd
{
listen = 9312
listen = 9306:mysql41
log = D:/sphinx/log/searchd.log
query_log = D:/sphinx/log/query.log
read_timeout = 5
max_children = 30
pid_file = D:/sphinx/log/searchd.pid
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
workers = threads # for RT to work
binlog_path = D:/sphinx/data
}

5. 导入 "example.sql" 到数据库。(注意:该数据库就是上面配置中的数据库)

6. 打开CMD窗口:进入bin目录,shift+鼠标右键,选择"在此处打开命令窗口",进入cmd窗口。

  windows下安装 sphinx 数据库全文搜索引擎

7. 建立索引:在cmd命令行中输入  indexer.exe --all

  windows下安装 sphinx 数据库全文搜索引擎

8. 开启searchd服务:在cmd命令行下输入  searchd.exe

  windows下安装 sphinx 数据库全文搜索引擎

9. 成功后测试:

  a. 在D:\sphinx\api下写一个foo.php;

 <?php

     require_once 'sphinxapi.php';

     $s = new SphinxClient();
$s->setServer('localhost', 9312);
$result = $s->Query('number'); //搜索"number"字符串 print_r($result);

  b. 执行这个foo.php;

    在cmd命令输入  php D:\sphinx\api\foo.php ,结果如下

 Array
(
[error] =>
[warning] =>
[status] => 0
[fields] => Array
(
[0] => title
[1] => content
) [attrs] => Array
(
[group_id] => 1
[date_added] => 2
) [matches] => Array
(
[1] => Array
(
[weight] => 1442
[attrs] => Array
(
[group_id] => 1
[date_added] => 1476926888
) ) [2] => Array
(
[weight] => 1442
[attrs] => Array
(
[group_id] => 1
[date_added] => 1476926888
) ) [4] => Array
(
[weight] => 1442
[attrs] => Array
(
[group_id] => 2
[date_added] => 1476926888
) ) ) [total] => 3
[total_found] => 3
[time] => 0.000
[words] => Array
(
[number] => Array
(
[docs] => 3
[hits] => 3
) ) )

    

sphinx配置文件详解 - http://www.cnblogs.com/yjf512/p/3598332.html