-
Sphinx (全文索引引擎)
-
MyISAM 引擎中的全文索引是专门对文本创建索引的,支持英文,但对中文的支持不好
-
Coreseek 是一款中文全文检索/搜索软件,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域
适用于行业/垂直搜索、论坛/站内搜索、数据库搜索、文档/文献检索、信息检索、数据挖掘等应用场景
Coreseek 下载: http://www.coreseek.com
Sphinx为其他应用提供高速、低空间占用、搜索结果高相关度的全文搜索功能
内置MySQL和PostgreSQL数据库数据源的支持。搜索API支持PHP、Python、Perl、Rudy和Java
注:Sphinx的Windows版可用于测试和调试,但不建议用于生产系统。
- 缺少并发查询的支持
- 缺少索引数据热切换的支持
数据源: 索引的数据可以来自不同的来源:SQL数据库、纯文本、HTML文本、邮件等。
限制: 每一个文档必须有一个ID,并且类型必须为唯一的、非零非负的整数
searchd开启服务端
searchd -c 配置文件 索引名称(允许查询的索引的名字)
服务器端默认监听 9312 端口。
常用命令:
-c : 指定配置文件路径
--stop : 停止当前服务
--status : 查看当前状态
--install : 安装为 windows 服务
--delete: 删除windows服务
--port port: 监听的端口
--index indexName : 只查询某个索引,默认查询所有索引
操作
--->建立索引(对DB)--->通过phpAPI查询--->根据phpAPI返回结果再去查询DB
1. 准备数据:数据库引擎为-MyISAM
SET NAMES utf8;
USE test; # 使用test数据库
DROP TABLE IF EXISTS curl_songs; # 如果curl_songs已经存在,就删除。
CREATE TABLE curl_songs
(
id int unsigned not null auto_increment,
title varchar(30) not null default '',
author varchar(30) not null default '',
content text,
primary key (id)
)engine=MyISAM default charset=utf8;
2. 自我复制数据150万:
insert into curl_songs(title,author,content)select title,author,content from curl_songs;
3. 解压coreseek.tar文件
indexer.exe---创建索引文件的命令
search.exe----测试用
searchd.exe---sphinx服务器端的命令,在生成索引文件后需要开启服务让PHP来连接
1) 将/etc/csft.mysql.conf 复制一份重命名为sphinx.conf并放在D:/sphinc/下
2) 新建日志文件(log.txt, query.txt)放在D:/sphinx/下
3) 指定中文词库文件(在sphinx.conf指定)
4. 用sphinx生成索引---indexer -c 配置文件 索引名称(--all代表所有索引)
E:\DB_NoSQL\sphinx\coreseek-3.2.14-win32\bin\indexer.exe -c D:/sphinx/sphinx.conf --all
可能出现问题:
ERROR: invalid token in D:/sphinx/sphinx.conf line 1 col 1. 将sphinx.conf文件另存为无BOM格式
5. php查询--开启sphinx服务器
win7下可能无法启动服务,--只能用命令窗口式启动:searchd -c d:/sphinx/sphinx.conf
#E:\DB_NoSQL\sphinx\coreseek-3.2.14-win32\bin\searchd.exe -c D:/sphinx/sphinx.conf --install