sphinx简介+全文索引

一.sphinx简介:
Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。


Sphinx 单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需 3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。


二、sphinx优点:
Sphinx的主要特性包括:
高速索引 (在新款CPU上,近10 MB/秒);
高速搜索 (2-4G的文本量中平均查询速度不到0.1秒);
高可用性 (单CPU上最大可支持100 GB的文本,100M文档);
提供良好的相关性排名
支持分布式搜索;
提供文档摘要生成;
提供从MySQL内部的插件式存储引擎上搜索
支持布尔,短语, 和近义词查询;
支持每个文档多个全文检索域(默认最大32个);
支持每个文档多属性;
支持断词;
支持单字节编码与UTF-8编码;
 
三、基于sphinx产品:
 Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索、论坛/站内搜索、数据库搜索、文档/文献检索、信息检索、数据挖掘等应用场景.


四、何时,需要全文检索


     全文搜索技术虽然是好东西,但并不是任何人都需要全文检索的,我们总结了国内全文检索的几个典型应用场景。


4.1您在运营知识分享型的社区(Forum):
大量的新来用户对某些简单的问题反复发帖询问,版主不胜其烦;
大量宝贵的答案、精辟的见解被淹没在回复中,通过帖子主题检索不到;
为了降低服务器负载,您不得不限制用户每30秒才能使用搜索功能一次,用户很难受,您很难过;
为了提高服务质量,您寄希望于Google、百度这样的全网搜索引擎,但是您的数据更新可能不及时,更要命的是有些私密的主题,您不想让除了您和您的注册用户以外的第三方知道;
4.2您在运营社会化社交网络(SNS):
如何让您的用户找到志同道合的朋友?
如何帮助用户更好的管理自己的Blog?
4.3您在运营电子商务网站(e-Shop):
如何让每个访客尽快找到他/她感兴趣的商品,达成销售?


五、全文搜索与数据库的区别:
 全文检索是数据库的有力补充,全文检索并不能替代数据库在应用系统中的作用。当应用系统的数据以大量的文本信息为主时,采用全文检索技术可以极大的提升应用系统的价值。


数据库搜索,如果搜索范围包括全部正文数据,往往性能很低,用户响应时间长(分钟级,经常超时);而全文检索可以在0.x秒(毫秒级)的时间内将结果反馈给用户;
数据库搜索,一个用户在搜索,往往影响其他用户的对应用系统进行操作;全文检索可以同时支持多个用户并发搜索,其他对应用系统进行操作的用户不受影响; 
数据库搜索很难实现多个关键字的复合搜索;而全文检索可以实现多个关键词的复合搜索,包括 “和(AND)”、“或(OR)”、“否(NOT)” 等; 
数据库搜索难于对结果进行相关度排序,当检索结果多时,用户往往难于找到最恰当的文档;而全文检索通过统计的研究成果,可以将文档进行相关度排序后,再返回给用户,提高用户的效率;
全文检索还可以对检索结果的数据进行聚类分析(Group, 这里的聚类和NLP里面的聚类算法不同),增进用户对数据分布情况的了解; 
全文检索需要用户定期执行建立索引的动作,比直接使用数据库搜索增加了维护的工作; 
实现的不完善的全文索引系统容易造成索引与数据库的不一致,反而降低了用户的使用体验; 
优秀的全文检索系统支持按照文档的不同字段分配不同的检索权重,根据应用的不同动态的改变结果的排序;
对于中文、日文和韩文而言,全文检索支持分词,进一步缩小了结果集的范围;而数据库检索往往不支持,往往一些与搜索词毫不相干的内容也混入了结果集。
     全文检索与数据库检索各有优势,需要根据具体应用场景的不同灵活选择。


六、下载
  http://www.coreseek.cn/news/14/52/
七、 安装:
  7.1  D:/wwwroot/coreseek  我这里安装在wwwroot 下面(根据你个人爱好,放哪都可以);
  7.2  “开始”——>“运行”——>输入cmd,打开命令行窗口——>执行 "d: 回车"——>执行 "cd  wwwroot\coreseek\",进入到 coreseek目录下;
      C:\Documents and Settings\Administrator>d:
      D:\>cd wwwroot/coreseek
      D:\wwwroot\coreseek>
 7.3 设置环境变量
          我的电脑--->属性---->高级--->环境变量---->系统变量---->path-->点击编辑 ;d:\wwwroot\coreseek\bin


7.4  安装服务
   D:\wwwroot\coreseek>bin\searchd --install --config d:wwwroot/coreseek/etc/csft_mysql.conf
 






八、mysql数据源的配置与创建索引


 8.1 创建数据库
cmd   
mysql -uroot -ptest123
create database weibo
use news;
create  table mynews(
 id int primary key auto_increment,
 title varchar(200) not null,
content text not null,
addTime datetime not null,
author varchar(30) not null,
fulltext(title,content)
)engine=myisam default charset=utf8;
   
8.2   第二步: 创建配置文件
csft_mysql.conf  数据库配置
   我们这里以mysql为数据源来做配置


8.3 创建索引
  C:\Documents and Settings\Administrator>d:
   D:\>cd wwwroot\coreseek\
  D:\wwwroot\coreseek>bin\indexer -c etc/csft_mysql.conf mysql


8.4 数据测试
  bin/search -c etc/csft_mysql.conf 百度











你可能感兴趣的:(索引,搜索,sphinx,设计,全文检索)