您的位置:首页 > 其它

sphinx简介+全文索引

2015-12-08 10:21 465 查看
一.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 百度
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: