Sphinx
使用背景
当对大文本对数据进行单词匹配查询时,如:有一个歌曲网站,数据库中收集着上百万首歌曲的信息,如果要查询出歌词中带“爱情”带所有歌曲,典型的做法是执行如下SQL语句。
select * from songs where content like "%爱情%".
但是在mysql中以%开头的查询无法使用所有,所以这条sql语句将执行权标扫描,性能极差。MylSAM引擎中的全文所有是专门对文本创建索引对,但对中文对支持不好。
好的解决方案,使用sphinx!
传统的sphinx技术
英文:1. today is mondy,the wearther is ranning.
2. tomorrow is tuesday, the wearther is sunning
把整个文档按照空格进行分词,去掉一些修饰词,形成以下词组:
today monday weather ranning tomorrow sunning
中文没法进行分词
说明 sphinx 分词技术只有针对英文 不支持中文
Coreseek
第一步 对于数据源建立索引
第二步 执行查询 返回查询到单词所在,mysql里面记录的id
php要把查询的单词给sphinx软件,软件拿到要查询的单词后,从索引里面进行匹配 该单词在mysql表里面记录的id
php拿到单词所在的额id后,根据该id去mysql里面查找数据
什么是Coreseek
Coreseek是一款中文全文检索/搜索软件,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索、论坛/站内搜索 数据库搜索 文档、文献检索 信息检索 数据挖掘等应用场景
下载 http://www.coreseek.com/ 地址(已经不能用啦!)