当前位置:首页 >> IT/计算机 >>

Sphinx全文索引最新的安装教程

[图文教程]Sphinx 全文索引安装教程

— 本帖被 phpwind 从 phpwind 黑板报 移动到本区(2010-08-18) — 首先了解一下 sphinx 全文索引的相关知识 官方网站:http://www.sphinxsearch.com/ 官方文档:http://www.sphinxsearch.com/docs/ 中文支持:http://www.coreseek.cn/ 中文使用手册下载: http://www.coreseek.cn/uploads/pdf/sphinx_doc_zhcn_0.9.pdf 基本上看看上面的官方教程和中文使用手册,你应该会安装和使用 Sphix 全文 索引,当然,还有一些细节,需要不断的 google 和 baidu,那为了节省大家的 时间,就出一个完整的 Sphinx 安装教程和结合 PHPWIND 程序的使用教程 (PHPWIND7.5 版本支持)。 接下来开始 Sphinx 的技术之旅吧! 考虑到 Sphinx 全文索引使用的实际需要, 主要介绍 Sphinx 全文索引中文方面 的支持。 这里需要感谢李沫南同学对 Sphinx 全文索引中文支持的贡献! 一,Windows 下安装 Sphinx 1,开始前的准备工作 来源:http://www.coreseek.cn/products/ft_down/ 下载 csft3.1: http://www.coreseek.cn/uploads/csft/3.1/win32/csft3.1.bin.zip 下载标准词库:http://www.coreseek.cn/uploads/csft/3.1/data.zip 解压:csft3.1.bin.zip 如下目录,解压在 C:\csft3.1 目录下 解压:data.zip,解压在 C:\csft3.1\data 目录下 [分词包]

需要新建 log 文件夹 (1)复制 C:\csft3.1\conf\csft.conf.in 文件 到 C:\csft3.1\bin\ 目录下,并重命名为 csft.conf 注意 csft.conf 文件里的类似:path = @CONFDIR@/data/test1 把@CONFDIR@替换为 C:\csft3.1\ 如上更改为:path = C:\csft3.1\ data\test1 (2)把测试数据 都会吧!] C:\csft3.1\conf\example.sql 导入数据库 [这个基本

(3)建立索引,在 DOC 界面下运行:indexer.exe --all 如下图,

建立索引过程需要仔细检查 csft.conf 数据库配置是否正确。如下: sql_host = localhost #数据库主机地址 sql_user = test #数据库用户名,拥有数据库所有权限 sql_pass = sql_db = test #数据库名 sql_port = 3306 #可用端口,一般不需要更改 其它配置使用默认,先体验下 sphinx 全文索引功能。 (4)测试搜索是否正常,运行:search.exe test 如下图

测试正常将返回 (5)开启搜索进程服务,运行:searchd.exe 如下图

这样就能提供 sphinx 全文索引的搜索服务了,以上就是一个简单的操作过程, 如果需要支持中文索引,就需要配置相应的参数,具体请查看中文使用手册。为 了便于大家了解相关配置, 可查看 PHPWind 程序支持 Sphinx 全文索引的配置 文件,大家可边对照手册边了解[中文支持具体请看 linux 安装部分]。 附:PHPWind 程序支持 Sphinx 全文索引的配置。 Windows 下安装 Sphix 使用 csft 非常简单,如果大家有兴趣可从 sphinx[www.sphinxsearch.com]官方下载安装, 不过有点复杂, 这里就不介 绍了,高手们慢慢体验。 二,linux 下安装 Sphinx 全文索引,以 CentOS 5.3 为例 只能说 windows 下安装 sphinx 只是为了体验,因为 linux 下安装 sphinx 才 是正道。 为了详细体验 Centos 下安装 Sphinx, 重新安装 Centos 系统, 完整体验 Sphinx 安装过程。 Coreseek 全文检索服务器版本已经集成 sphinx 和中文分词补丁, 只需要下载 MMSeg 和 Coreseek Fulltext Server(源代码),就能实现 Sphinx 服务支持。 下载地址:http://www.coreseek.cn/products/ft_down/

推荐源代码安装 1,开始前的准备工作 [如果已经安装就不需要,如果下面列表没有还有其它的 请补上] 1)安装 mysql 2)安装 php 3)安装 apache 4)安装 python 5)安装 libiconv 6)安装 gcc-c++ 7)下载 Coreseek Fulltext Server(源代码): http://www.coreseek.cn/uploads/csft/3.1/Source/csft-3.1.tar.gz 8)下载 Coreseek Mmseg(源代码): http://www.coreseek.cn/uploads/csft/3.1/Source/mmseg-3.1.tar.gz 执行如下命令 yum install python python-dev 2,安装步骤 (1)下载 CSFT 与 MMseg #wget http://www.coreseek.cn/uploads/csft/3.1/Source/mmseg-3.1.tar.gz #wget http://www.coreseek.cn/uploads/csft/3.1/Source/csft-3.1.tar.gz (2)安装 MMseg 中文分词 # pwd /usr/local [知道当前的安装目录] # wget http://www.coreseek.cn/uploads/csft/3.1/Source/mmseg-3.1.tar.gz # tar xzvf mmseg-3.1.tar.gz # mkdir /usr/local/mmseg # cd mmseg-3.1 # ./configure --prefix=/usr/local/mmseg # make # make install 运行如下,看看 mmseg 是否安装成功 # /usr/local/mmseg/bin/mmseg Coreseek COS(tm) MM Segment 1.0 Copyright By Coreseek.com All Right Reserved. Usage: /usr/local/mmseg/bin/mmseg <option> <file> -u <unidict> Unigram Dictionary -r Combine with -u, used a plain text build Unigram Dictionary,

default Off -b <Synonyms> Synonyms Dictionary -h print this help and exit

(3)安装 csft-3.1 # pwd /usr/local # wget http://www.coreseek.cn/uploads/csft/3.1/Source/csft-3.1.tar.gz # tar xzvf csft-3.1.tar.gz # mkdir /usr/local/csft # cd csft-3.1 # ./configure --prefix=/usr/local/csft --with-mmseg=/usr/local/mmseg/bin/mmseg --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/ # make # make install 这里 make 的时候可能出错,解决如下: 1,检查环境是否安装如下软件 # yum install mysql mysql-devel php-mysql qt4-mysql 要首先安装] # yum install python python-dev 2,是否安装 libiconv 下载地址:http://savannah.gnu.org/projects/libiconv/ 3,如果还有错误,打开 src/Makefile 文件,进行修改 # vi src/Makefile 找到 182 行

[mysql 环境

LIBS = -lm -lz -lexpat -L/usr/local/lib -lpthread LIBS = -lm -lz -lexpat -liconv -L/usr/local/lib -lpthread

这样,如果一切顺利,就开始配置你的 sphinx 全文索引服务器吧[如果安装有 什么问题,欢迎在 PHPWind 官方提问]! 3,按下来就是配置 #cp /usr/local/csft/etc/sphinx-min.conf.dist /usr/local/csft/etc/sphinx.conf 修改 sphinx.conf 文件中的数据库参数配置,方法同 windows 下一样 sql_host = localhost sql_user = root sql_pass = sql_db = test 4,把体验数据/usr/local/csft/etc/example.sql 导入到数据库 [这一步应该 都会] 5,新建索引 # /usr/local/csft/bin/indexer --all 6,测试搜索 # /usr/local/csft/bin/search test 如果测试有返回,恭喜你的 sphinx 全文索引服务器配置成功 7,接下来就是支持中文的配置和实现 UTF8 编码实例 [如果已经存在 utf8 的数据库就不需要新建,这里只是举例] 1)创建一个新的数据库,注意编码为 utf8_general_ci,如 phpwind 2)导入部分现有的 GBK 数据,如 pw_threads 3)配置 csft.conf 如下 source 数据源部分 sql_host = localhost sql_user = root sql_pass = sql_db = phpwind sql_query_pre = SET NAMES utf8 sql_query_pre = SET SESSION query_cache_type=OFF sql_query = SELECT tid,fid,authorid,subject FROM pw_threads sql_attr_uint = fid sql_attr_uint = authorid 索引部分 charset_type charset_dictpath min_prefix_len

= zh_cn.utf-8 = /usr/local/csft/ =0

min_infix_len min_word_len

=0 =2

4)创建数据词典 #pwd /usr/local/mmseg-3.1/data [这是你解压 mmseg 的目录下的 data] 运行如下命令 # mmseg -u unigram.txt # ll 总计 10152 -rwxr-xr-x 1 root root 715 06-06 18:40 build_unigram.py -rwxr-xr-x 1 root root 32674 06-06 18:40 char.stat.txt -rwxr-xr-x 1 root root 1051268 06-06 18:40 Lexicon_full_words.txt -rwxr-xr-x 1 root root 1826251 06-06 18:40 unigram.txt -rw-r--r-- 1 root root 3729280 09-16 20:20 unigram.txt.uni 将会生成 unigram.txt.uni 文件 # mv unigram.txt.uni uni.lib # cp uni.lib /usr/local/csft/ [这就是上面我们在配置索引中用的 charset_dictpath] 其它的默认不变,如上方法创建索引 # /usr/local/csft/bin/indexer --all 测试是否成功 # /usr/local/csft/bin/search 测试 以上就是 utf8 编码的全文索引实现过程 GBK 编码实例 与 utf8 一样,区别在于数据库和数据表使用 gbk 编码 同时只需要修改如下配置部分[csft.conf] source 数据源部分 sql_query_pre = SET NAMES gbk 索引部分 charset_type

= zh_cn.gbk

这里需要注意一下, 如果要想测试支持 gbk, 可以写一个 PHP 文件, 调用 sphinx 提供的 api 接口,注意要开启 searchd 进程 # /usr/local/csft/bin/searchd

编写如下代码 [注意要与 sphinxapi.php 目录存放在一个目录] sphinxapi.php 目录在# /usr/local/csft-3.1/api/下 也可以直接使用 api 目录下的 test.php 直接测试 <?php require_once 'sphinxapi.php'; $sc = new SphinxClient(); $sc->SetServer('127.0.0.1',3312); $sc->SetConnectTimeout(1); $sc->SetWeights(array(100,1)); $sc->SetMatchMode(SPH_MATCH_ALL); $sc->SetArrayResult(TRUE); $res = $sc->query("简单"); var_dump($res); ?> 也可以直接运行 search 工具[utf8 版],如下

[root@localhost ~]# /usr/local/csft/bin/search 便宜 Coreseek Full Text Server 3.1 Copyright (c) 2006-2008 coreseek.com using config file '/usr/local/csft/etc/csft.conf'... index 'test1': query '便宜 ': returned 4 matches of 4 total in 0.015 sec displaying matches: 1. document=3, weight=1, fid=7, authorid=1 2. document=97, weight=1, fid=35, authorid=1 3. document=108, weight=1, fid=32, authorid=1 4. document=146, weight=1, fid=7, authorid=1

words: 1. '便宜': 4 documents, 4 hits 如果返回 false,请检查 searchd 进程是否开启,如果返回成功,恭喜,你已经 成为 sphinx 的使用者,向下一个高层次进军吧! 三,后记 其实很想制作一个安装视频教程,但由于时间有限,在安装过程中肯定会存在一 些细节上的问题,只要大家按照上面的步骤一步一步安装,相信能把 sphinx 拿 下,如果有什么问题 大家可查看 http://www.sphinxsearch.com/和 http://www.coreseek.cn/网站获取更多帮助,同时也可以查看中文手册。 同时也可以在 phpwind 官方网站 www.phpwind.net 提问和分享你的安装过 程,把一个细节都亮出来,帮助别人也帮助自己。BY liuhui.php@gmail.com 2009-9-17 其它链接 用 PHP 构建自定义搜索引擎 http://www.ibm.com/developerworks/cn/opensource/os-php-sphinx search/index.html MMSEG: A Word Identification System for Mandarin Chinese Text Based on Two Variants of the Maximum Matching Algorithm http://technology.chtsai.org/mmseg/ 附 phpwind 配置实例[gbk 版] PHPWind 搜索 sphinx 配置实例 [修改部分参数就可直接应用于 phpwind 程 序] 部分解读: 如下全文索引使用的是主索引+增量索引的方式, 具体大家结合手册了解相关知 识 需要创建一张表 [编码自己定,如下是 gbk] CREATE TABLE IF NOT EXISTS `search_counter` ( `counterid` int(11) NOT NULL DEFAULT '0', `max_doc_id` int(11) NOT NULL DEFAULT '0', `min_doc_id` int(10) NOT NULL DEFAULT '0', PRIMARY KEY (`counterid`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk;

csft.conf 配置文件

source tmsgs { type = mysql sql_host = localhost sql_user = root sql_pass = xxxx sql_db = phpwind sql_port = 3307 # optional, default is 3306 sql_sock = /tmp/mysql3307.sock sql_query_pre = SET NAMES gbk sql_query_pre = SET SESSION query_cache_type=OFF sql_query_pre = REPLACE INTO search_counter SELECT 1,MAX(tid),MIN(tid) FROM pw_tmsgs sql_query_range = SELECT min_doc_id, max_doc_id FROM search_counter WHERE counterid = 1 sql_range_step = 1000 sql_query = SELECT th.tid,th.subject,th.authorid,th.postdate,th.lastpost,th.fid,th.digest,t h.hits,th.replies,t.content FROM pw_threads th LEFT JOIN pw_tmsgs t USING(tid) WHERE th.tid > $start AND th.tid <= $end sql_attr_uint sql_attr_uint sql_attr_uint sql_attr_uint sql_attr_timestamp sql_attr_timestamp sql_attr_uint } source addtmsgs { type sql_host sql_user sql_pass sql_db sql_port sql_sock sql_query_pre sql_query_pre query_cache_type=OFF = = = = authorid hits replies fid = postdate = lastpost = digest

= mysql = localhost = root = xxxx = phpwind = 3307 # optional, default is 3306 = /tmp/mysql3307.sock = SET NAMES gbk = SET SESSION

sql_query_range = SELECT max_doc_id, max_doc_id+100000 FROM search_counter WHERE counterid = 1 sql_range_step = 100000 sql_query = SELECT th.tid,th.subject,th.authorid,th.postdate,th.lastpost,th.fid,th.digest,t h.hits,th.replies,t.content FROM pw_threads th LEFT JOIN pw_tmsgs t USING(tid) WHERE th.tid > $start AND th.tid <= $end sql_attr_uint = authorid sql_attr_uint = hits sql_attr_uint = replies sql_attr_uint = fid sql_attr_timestamp = postdate sql_attr_timestamp = lastpost sql_attr_uint = digest sql_query_post = REPLACE INTO search_counter SELECT 1,MAX(tid),MIN(tid) FROM pw_tmsgs #sql_attr_uint = tid } source threads { type = mysql sql_host = localhost sql_user = root sql_pass = xxxxxxx sql_db = phpwind sql_port = 3307 # optional, default is 3306 sql_sock = /tmp/mysql3307.sock sql_query_pre = SET NAMES gbk sql_query_pre = SET SESSION query_cache_type=OFF sql_query_pre = REPLACE INTO search_counter SELECT 3,MAX(tid),MIN(tid) FROM pw_threads sql_query_range = SELECT min_doc_id, max_doc_id FROM search_counter WHERE counterid = 3 sql_range_step = 1000 sql_query = SELECT th.tid,th.subject,th.authorid,th.postdate,th.lastpost,th.fid,th.digest,t h.hits,th.replies FROM pw_threads th WHERE th.tid > $start AND th.tid <= $end sql_attr_uint = authorid sql_attr_uint = hits sql_attr_uint = replies

sql_attr_uint sql_attr_timestamp sql_attr_timestamp sql_attr_uint }

= fid = postdate = lastpost = digest

source addthreads { type = mysql sql_host = localhost sql_user = root sql_pass = xxx sql_db = phpwind sql_port = 3307 # optional, default is 3306 sql_sock = /tmp/mysql3307.sock sql_query_pre = SET NAMES gbk sql_query_pre = SET SESSION query_cache_type=OFF sql_query_range = SELECT max_doc_id, max_doc_id+100000 FROM search_counter WHERE counterid = 3 sql_range_step = 100000 sql_query = SELECT th.tid,th.subject,th.authorid,th.postdate,th.lastpost,th.fid,th.digest,t h.hits,th.replies FROM pw_threads th WHERE th.tid > $start AND th.tid <= $end sql_attr_uint = authorid sql_attr_uint = hits sql_attr_uint = replies sql_attr_uint = fid sql_attr_timestamp = postdate sql_attr_timestamp = lastpost sql_attr_uint = digest sql_query_post = REPLACE INTO search_counter SELECT 3,MAX(tid),MIN(tid) FROM pw_threads #sql_attr_uint = tid } index tmsgsindex { source path docinfo

= tmsgs = /usr/local/csft/var/data/tmsgs = extern

charset_type #min_prefix_len = 0 #min_infix_len = 2 #ngram_len = 2 charset_dictpath min_prefix_len min_infix_len min_word_len }

= zh_cn.gbk

= /usr/local/csft/ =0 =0 =2

index addtmsgsindex { source = addtmsgs path = /usr/local/csft/var/data/addtmsgs docinfo = extern charset_type = zh_cn.gbk #min_infix_len = 2 #ngram_len = 2 charset_dictpath = /usr/local/csft/ min_prefix_len =0 min_infix_len =0 min_word_len =2 } index threadsindex { source = threads path = /usr/local/csft/var/data/threads docinfo = extern charset_type = zh_cn.gbk #min_prefix_len = 0 #min_infix_len = 2 #ngram_len = 2 charset_dictpath = /usr/local/csft/ min_prefix_len =0 min_infix_len =0 min_word_len =2 } index addthreadsindex { source path

= addthreads =

/usr/local/csft/var/data/addthreads docinfo = extern charset_type = zh_cn.gbk #min_infix_len = 2 #ngram_len = 2 charset_dictpath = /usr/local/csft/ min_prefix_len =0 min_infix_len =0 min_word_len =2 } indexer { mem_limit = 128M } searchd { port = 3312 log = /usr/local/csft/var/log/searchd.log query_log = /usr/local/csft/var/log/query.log read_timeout =5 max_children = 30 pid_file = /usr/local/csft/var/log/searchd.pid max_matches = 1000 seamless_rotate =1 preopen_indexes =0 unlink_old =1 }


相关文章:
sphinx scws全文检索的安装配置步骤.doc
sphinx scws全文检索的安装配置步骤_计算机软件及应用_IT/计算机_专业资料。sphinx scws全文检索的安装配置步骤 sphinx scws 全文检索的安装配置步骤 scws 是一个由 ...
discuz 配置全文搜索 sphinx社区全文搜索平台配置手册.doc
千万级 Discuz!数据全文检索方案(Sphinx)前言:康盛创想的 Discuz!从创立之初即以...4 三、 Sphinx 安装步骤......
传智2015年sphinx笔记个人整理全文索引_图文.doc
包这下就可以对中文进行全文索引Sphinx 自动更新 实际操作: 1:每次生成索引文件之后要把最后一条记录的 ID 保存下来,下次 ID 大于这个 ID 的就是最新的数据...
Python-Sphinx安装文档.doc
Python-Sphinx安装文档 - 简介: Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL,PostgreSQL 做全文搜索,它 可以提供比数据库本身更专业的搜索功能...
sphinx社区全文搜索平台配置手册.doc
千万级 Discuz!数据全文检索方案(Sphinx)前言:康盛创想的 Discuz!从创立之初即以...4 三、 Sphinx 安装步骤......
Sphinx安装手册_图文.doc
安装步骤。 青绿色字体 绿色 字体 粉红色字体 红色背景字 如粘贴复制的命令报...Coreseek 应该是现在用的最多的 Sphinx 中文全文检索,它提供了为 Sphinx 设计的...
Sphinx详细安装配置.doc
Sphinx 详细安装配置项目中需要重新做一个关于商品的全文搜索功能,于是想到了用 ...检索编码(数据库非 utf8 的很可能检索不到) sql_query_pre = SET NAMES ...
Sphinx全文检索_图文.ppt
步骤有分几小步: 首先,在索引表中,分别找出包含Sphinx,PHP,Linux的文 档...31页 免费 sphinx在windows下的安装... 7页 免费 2018 Baidu |由 百度...
Sphinx+LibMMSeg搭建中文全文搜索引擎_安装配置.doc
目前最新补丁针 对 sphinx 0.9.8 rc2 安装 mmesg wget http://www.coreseek...索引 /usr/local/sphinx/bin/indexer config /usr/local/sphinx/etc/sphinx....
Coreseek 全文检索服务器 2.0 (Sphinx 0.9.8)中文参考....doc
Coreseek 全文检索服务器 2.0 (Sphinx 0.9.8)中文参考手册中.pdf_IT/计算机_...安装 Sphinx 2.4. 已知的问题和解决方法 2.5. Sphinx 快速入门教程 3. 建立...
Sphinx 使用经验分享剖析_图文.ppt
什么是Sphinx ? 什么是全文检索? Hot Tip 什么是Sphinx Hot Tip ? 什么是...安装步骤: ? ? 中文分词工具mmseg 数据库mysql ? Sphinx插件补丁(SphinxSE) ?...
讲解Sphinx、Coreseek在windows下的配置安装及测试.doc
讲解Sphinx、Coreseek在windows下的配置安装及测试_IT...二、coreseek 中文全文检索测试 直接运行 coreseek-3...,这是乱码问题, 具体解决方法可以参考官方资料,这里...
基于Sphinx+MySQL的千万级数据全文检索(搜索引擎)架构设计.doc
基于Sphinx+MySQL的千万级数据全文检索(搜索引擎)架构设计_IT/计算机_专业资料。...安装步骤: 二、MySQL+Sphinx+SphinxSE 安装步骤: 1、安装 python 支持 支持(...
Sphinx SE 安装手册.doc
SphinxSE 的安装 SphinxSE 的使用 SphinxSE 是一个可以编译进 MySQL 5.x ...SPHINX全文检索之PHP使用... 暂无评价 10页 5下载券 SPHINX全文检索之PHP使用...
Sphinx+Python+Oracle构建全文检索系统.doc
目前, 很多大型企业的 crm 系统在构建时都是采用 oracle 作为数据库,本文正是为这类系统提供一个可以作为参考实现的基 于 sphinx 的站内全文检索系统的实现方法...
Sphinx的配置使用(超详细分析conf).doc
Sphnix 的配置使用手册概念讲解 Sphinx 全文搜索引擎 ...(BM25)的复合 Ranking 方法 5:支持分布式搜索 6:...的索引 首先,需要配置好 index 索引后,才可以安装...
基于Sphinx+MySQL全文检索架构设计.doc
基于Sphinx+MySQL 全文检索架构设计前言: 本文阐述的是一款经过生产环境检验的千万...安装 SphinxSE 作为 MySQL 的存储引擎,将 MySQL 与 Sphinx 结合起来,是一种...
PHP+Mysql+Sphinx高效的站内搜索引擎搭建详释.doc
慢,那么这时你就可以考虑使用 Sphinx 了(当然其他的全文检索程序或方法也行) ...可 以将 Sphinx 安装成系统服务,在后台运行,安装系统服务只需在命令行中输入...
使用Sphinx 制作简洁而又美观的文档.doc
目前,注意到了有一个列出其他 单独的文件的索引文件...Sphinx 能够用不同的格式导出文档,但 要求安装额外...工具和项目更新以及最受欢迎的文章和教程,帮助您 用...
Sphinx搜索引擎架构与使用文档(和MySQL结合).doc
5 安装步骤: 二、MYSQL+SPHINX+SPHINXSE 安装步骤: ... 5 1、...(数值属性或全文检索属性) 支持不同的搜索模式(“完全匹配”,“短语匹配”和“任一匹配”)...