一、  Sphinx简介

Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其他应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式 的XML数据。

Sphinx的特性如下:

a)  高速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒);

b)  高性能的搜索(在2 – 4GB 的文本数据上,平均每次检索响应时间小于0.1秒);

c)  可处理海量数据(目前已知可以处理超过100 GB的文本数据, 在单一CPU的系统上可处理100 M 文档);

d)  提供了优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法;

e)  支持分布式搜索;

f)  支持短语搜索

g)  提供文档摘要生成

h)  可作为MySQL的存储引擎提供搜索服务;

i)  支持布尔、短语、词语相似度等多种检索模式;

j)  文档支持多个全文检索字段(最大不超过32个);

k)  文档支持多个额外的属性信息(例如:分组信息,时间戳等);

l)  支持断词;

虽然mysql的MYISAM提供全文索引,但是性能却不敢让人恭维,另外数据库毕竟不是很善于做这样的事情,我们需要把这些活让给更适合的程序去做,减少数据库的压力。因此采用Sphinx来做mysql的全文索引工具是一个很好的选择。这个星期主要来学习这个这个工具的使用,下面将学习过程大致的记录一下,做个备忘,也希望能对学习这个工具的其他朋友有所启发。

二、  Sphinx安装

Sphinx在mysql上的应用有两种方式:

  1. 采用API调用,如使用PHP、java等的API函数或方法查询。优点是可不必对mysql重新编译,服务端进程“低耦合”,且程序可灵活、方便的调用;缺点是如已有搜索程序的条件下,需修改部分程序。推荐程序员使用。
  2. 使用插件方式(sphinxSE)把sphinx编译成一个mysql插件并使用特定的sql语句进行检索。其特点是,在sql端方便组合,且能直接返回数据给客户端。不必二次查询,在程序上仅需要修改对应的sql,但这对使用框架开发的程序很不方便,比如使用了ORM。另外还需要对mysql进行重新编译,且需要mysql-5.1以上版本支持插件存储。

这里的安装主要介绍的是第一种通过api调用的方式。Sphinx的安装如下:

#下载最新稳定版

wget http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz

tar xzvf sphinx-0.9.9.tar.gz

cd sphinx-0.9.9

./configure --prefix=/usr/local/sphinx/   --with-mysql  --enable-id64

make

make install

注意:采用这种方式安装不支持中文分词。

三、  Sphinx中文分词

中文的全文检索和英文等latin系列不一样,后者是根据空格等特殊字符来断词,而中文是根据语义来分词。中文分词主要有2个插件

  1. Coreseek

Coreseek是现在用的最多的sphinx中文全文检索,它提供了为Sphinx设计的中文分词包LibMMSeg ,是基于sphinx的基础上开发的。

  1. sfc(Sphinx-for-chinese)

sfcsphinx-for-chinese是由网友happy兄提供的另外一个中文分词插件。其中文词典采用的是xdict

本文主要介绍Coreseek的安装方法

四、  Coreseek(支持中文检索的sphinx)安装

  1. 安装升级autoconf

因为coreseek需要autoconf 2.64以上版本,因此需要升级autoconf,不然会报错从http://download.chinaunix.net/download.php?id=29328&ResourceID=648下载autoconf-2.64.tar.bz2,安装方法如下:

tar -jxvf autoconf-2.64.tar.bz2

cd autoconf-2.64

./configure

make

make install

  1. 下载coreseek

新版本的coreseek将词典和sphinx源程序放在了一个包中,因此只需要下载coreseek包就可以了。

  1. 安装mmseg(coreseek所使用的词典)

tar xzvf coreseek-3.2.14.tar.gz

cd mmseg-3.2.14

./bootstrap    #输出的warning信息可以忽略,如果出现error则需要解决

./configure --prefix=/usr/local/mmseg3

make && make install

cd ..

  1. 安装coreseek(sphinx)

cd csft-3.2.14

sh buildconf.sh    #输出的warning信息可以忽略,如果出现error则需要解决

./configure --prefix=/usr/local/coreseek  --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql

make && make install

cd ..

  1. 测试mmseg分词和coreseek搜索

备注:需要预先设置好字符集为zh_CN.UTF-8,确保正确显示中文,我的系统字符集为en_US.UTF-8也是可以的。

cd testpack

cat var/test/test.xml  #此时应该正确显示中文

/usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml

/usr/local/coreseek/bin/indexer -c etc/csft.conf --all

/usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索

此时正确的应该返回

words:

1. '网络': 1 documents, 1 hits

2. '搜索': 2 documents, 5 hits

  1. 生成 mmseg词库及配置文件

新版本的已经自动生成。

五、  参考文章:

Sphinx中文指南

http://www.sphinxsearch.org/sphinx-tutorial

Sphinx中文分词应用

http://www.sphinxsearch.org/archives/82

Sphinx 0.9.8参考手册

CoreSeek BSD/Linux下的安装

http://www.coreseek.cn/products/products-install/install_on_bsd_linux/

转自http://blog.chinaunix.net/uid-20639775-id-3261834.html

coreseek安装的更多相关文章

  1. coreseek 安装及使用方法详解

    coreseek 安装及使用 一般站点都需要搜索功能,如果是php+mysql站点,建议选择coreseek,如果是java站点建议使用lucene,coreseek 是一款很好的中文全文检索/搜索软 ...

  2. coreseek安装遇到的错误

    coreseek安装遇到的错误 1.问题: wtm@wtm-OEM:/usr/local/coreseek/etc$ /usr/local/coreseek/bin/indexer --all Cor ...

  3. Sphinx(coreseek) 安装使用以及词库的扩展

    1.Sphinx(coreseek) 是啥 一般而言,Sphinx是一个独立的全文搜索引擎:而Coreseek是一个支持中文的全文搜索引擎,意图为其他应用提供高速.低空间占用.高结果相关度的中文全文搜 ...

  4. coreseek安装使用

    本文引自:http://www.phperz.com/article/14/0615/95.html sphinx的安装使用,其实都是大同小异,以下以 coreseek安装为例Coreseek 是一款 ...

  5. windows下的coreseek安装及PHP调用入门

    转载:http://zhan.renren.com/longmensoft?gid=3602888498043096197&checked=true 把我的运行环境简单说一下:windows ...

  6. Coreseek安装测试配置指南(转)

    Sphinx--强大的开源全文检索引擎,Coreseek--免费开源的中文全文检索引擎 软件版本:coreseek-4.1 mmseg-3.2.14 autoconf-2.64 老版本的coresee ...

  7. 0622centos下coreseek安装及使用方法

    Coreseek 中文全文检索引擎 Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索.论坛 ...

  8. coreseek安装过程

    一.sphinx 全文检索 通过sphinx检索到id,然后到mysql里面拿到记录 什么是劝我呢检索?结构化数据: 具有固定格式或者长度的数据非结构化数据: 标题 内容 等不定长的数据非机构化数据还 ...

  9. sphinx,coreseek安装

    sphinx是国外的一款搜索软件. coreseek是在sphinx的基础上,增加了中文分词功能,换句话说,就是支持了中文. Coreseek发布了3.2.14版本和4.1版本,其中的3.2.14版本 ...

随机推荐

  1. Highchart插件简介和引入方式

    一.Highchart简介: Highcharts 是一个用纯 JavaScript 编写的一个图表库, 能够很简单便捷的在 Web 网站或是 Web 应用程序添加有交互性的图表. Highchart ...

  2. 教你怎么半天搞定Docker

    首先,不要把docker想的那么高大,它不就是先做个镜像,然后通过docker像虚拟机一样跑起来嘛...docker其实在真实业务场景中还是非常有局限性的.Dockerfile脚本也没那么好写,有些应 ...

  3. [Erlang 0128] Term sharing in Erlang/OTP 下篇

    继续昨天的话题,昨天提到io:format对数据共享的间接影响,如果是下面两种情况恐怕更容易成为"坑", 呃,恰好我都遇到过; 如果是测试代码是下面这样,得到的结果会是怎样?猜! ...

  4. RemodelanyWhere11.0.2673版本下载

    百度云盘链接:http://pan.baidu.com/s/1geL5lez 密码:hisq 原文转载至:http://blog.sun0816.com/13623.html

  5. MySQL的查询计划中ken_len的值计算

    本文首先介绍了MySQL的查询计划中ken_len的含义:然后介绍了key_len的计算方法:最后通过一个伪造的例子,来说明如何通过key_len来查看联合索引有多少列被使用. key_len的含义 ...

  6. SQL 中的 AND OR

    AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤. AND 和 OR 运算符 AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来. 如果第一个条件和第二个条件都成立,则 ...

  7. [数据分析]excel带名称的四象限散点图制作

    本文前言:方法来至Excel图表之道这本数,偶然看到,好久没出数据分析的文章了,也难怪最近几个月都忙作网页,数据分析自己也就用excell和sql 正文: 带象限的散点图效果如下: 看到图片,这里制作 ...

  8. plain framework 商业版 开发总结1 updated

    每天对着不同的计划,多多少少有一种无形的压力.特别是对技术不好的我来说,过程中遇到的问题实在不少,时常纠结良久.时间慢慢流逝,最后虽然感觉有些不足,但是也不至于差强人意.商业版的PF核心已经升级到1. ...

  9. kettle中全局变量的设置

    设置全局变量. 找到.properties文件: 在文件中设置值: 在kettle中新建一个job(不用做任何设置): 转换中获取便元的设置: 重启kettle的执行结果:

  10. 【C#】调度程序进程已挂起,但消息仍在处理中;

    环境:WPF.弹窗,messageBox.show();错误信息:调度程序进程已挂起,但消息仍在处理中:解决方法:Dispatcher.BeginInvoke(new Action(()=>{  ...