Sphinx 与 coreseek 安装指南
Linux编译安装sphinx
帮助网址/products-install/install_on_bsd_linux/首先安装mmseg,然后安装coreseek。
Warning可以忽略,error不能忽略。
Wget /uploads/csft/3.2/coreseek-3.2.14.tar.gzTar xzvf coreseek-3.2.14.tar.gz coreseek-3.2.14Cd coreseek-3.2.14cd mmseg安装mmseg./bootstrap./configure --prefix=/www/wdlinux/mmsegmake && make install编译mmseg提示cannot find input file: src/Makefile.inaclocallibtoolize --force 运行后有一个错误,不用管它。
automake --add-missingautoconfautoheadermake clean提示;libtoolize: command not found yum install libtool测试/www/wdlinux/mmseg/bin/mmseg -d /www/wdlinux/mmseg/etc src/t1.txt安装csftcd csft-3.2.14sh buildconf.sh./configure --prefix=/www/wdlinux/coreseek --without-python --without-unixodbc --with-mmseg --with-mmseg-includes=/www/wdlinux/mmseg/include/mmseg/--with-mmseg-libs=/www/wdlinux/mmseg/lib/ --without-mysqlMake && make install安装官方的configure写,编译通过编译sphinx错误,1 一定要对应mmseg和sphinx的版本。
CoreSeek Mysql 安装与测试 For Mac OS X
CoreSeek Mysql 安装与测试For Mac OS X(中文分词与中文全文检索)CoreSeek安装比较麻烦,官方手册对此的支持并不算很好。
CoreSeek是基于Sphinx的中文的分词和全文检索软件。
本文是在MAC OS X系统下安装和调试CoreSeek。
安装过程中报错如果是警告warning则忽略,如果是错误error,则必须要处理。
CoreSeek是支持三种数据来源的,一种是众所周知的Mysql,一种是XML文件,另一种是Python。
而Python则是万能数据类型。
在本CoreSeek安装测试教程中只示例数据源是XML文件和MYSQL。
官方手册地址:/products-install/install_on_macosx一、设置环境变量$ export PATH=/usr/local/bin:$PA TH$ export LC_ALL=zh_CN.UTF-8$ export.UTF-8二、安装依赖库:m4、autoconf、automake、libtool。
注意:不要brew install 来安装,因为对安装的库的版本有要求。
$ curl -O -L /gnu/m4/m4-1.4.13.tar.gz$ tar -xzvf m4-1.4.13.tar.gz$ cd m4-1.4.13$ sudo ./configure --prefix=/usr/local/opt$ sudo make$ sudo make install$ cd ..$ curl -O -L /gnu/autoconf/autoconf-2.65.tar.gz $ tar -xzvf autoconf-2.65.tar.gz$ cd autoconf-2.65$ sudo ./configure --prefix=/usr/local/opt$ sudo make$ sudo make install$ cd ..$ curl -O -L /gnu/automake/automake-1.11.tar.gz $ tar xzvf automake-1.11.tar.gz$ cd automake-1.11$ ./configure --prefix=/usr/local/opt$ sudo make$ sudo make install$ cd ..$ curl -O -L /gnu/libtool/libtool-2.2.6b.tar.gz $ tar xzvf libtool-2.2.6b.tar.gz$ cd libtool-2.2.6b$ sudo ./configure --prefix=/usr/local/opt$ sudo make$ sudo make install$ cd ..三、安装Mysql。
在windows下sphinx和coreseek中文检索引擎配置
在windows下Coreseek的配置安装与测试一、安装:1. 安装Python2.6 Windows (x86)(必须,32位系统和64位系统均安装该版本):从ActiveState官方网站下载ActivePython 2.6 Windows (x86),然后安装;您也可从华军软件园下载ActivePython 2.6 Windows (x86),然后安装;2. 安装 Microsoft Visual C++ 2005 Redistributable Package (x86)(必须,32位系统和64位系统均安装该版本):从微软官方网站下载Microsoft Visual C++ 2005 Redistributable Package (x86),然后安装;3. 安装 Coreseek-3.2.13(必须):【2010年11月14日更新,支持命令行中文搜索测试】从Coreseek官方网站下载/uploads/csft/3.2/coreseek-3.2.13-win32.zip解压coreseek-3.2.13-win32.zip到coreseek-3.2.13-win32目录,重命名为sphinx,任意存放。
二、coreseek中文全文检索测试直接运行coreseek-3.2.13-win32目录下的test.cmd文件,如果没出任何问题,则一切测试正常,相关手工命令测试请访问:/products-install/install_on_windows/三、部分命令的说明使用这一切命令的输入都在“cmd命令提示符”窗口里操作,假如:把sphinx目录放在D 盘下,以下的所有例子将以这路径操作,不再说明。
1)、创建全部索引:(注:这里的索引不是数据库里的索引,是不同的概念,这只对于coreseek而言,别混淆)bin\indexer –c etc\csft_mysql.conf --all备注:其中etc\csft_mysql.conf就是刚才的配置文件相对路径;如果修改了数据库中的数据,则要重建索引,类似于刷新,因为创建索引后会自动把数据库中的数据存储到内存中,所以必须重建索引。
sphinx中文指南
目录(?)[+]
1、简介 1.1.Sphinx 是什么 1.2.Sphinx 的特性 1.3.Sphinx 中文分词 2、安装配置实例 2.1 在 GNU/Linux/unix 系统上安装 o o o 2.1.1 sphinx 安装 2.1.2.sfc 安装(见另文) 2.1.3.coreseek 安装(见另文)
2.安装配置实例
2.1在 GNU/Linux/unix 系统上安装
Sphinx 在 mysql 上的应用有两种方式: ①、采用 API 调用,如使用 PHP、java 等的 API 函数或方法查询。优点是可不必对 mysql 重新编译,服务端进程“低耦合”,且程序可灵活、方便的调用; 缺点是如已有搜索程序的条件下,需修改部分程序。推荐程序员使用。 ②、使用插件方式(sphinxSE)把 sphinx 编译成一个 mysql 插件并使用特定的 sql 语句进 行检索。其特点是,在 sql 端方便组合,且能直接返回数据给客户端 不必二次查询(注),在程序上仅需要修改对应的 sql,但这对使用框架开发的程序很 不方便,比如使用了 ORM。另外还需要对 mysql 进行重新编译,且需要 mysql-5.1以上版 本 支持插件存储。系统管理员可使用这种方式 二次查询注:到现在发布版本为止——sphinx-0.9.9,sphinx 在检索到结果后只能返回记录 的 ID,而非要查的 sql 数据,故需要重新根据这些 ID 再次从数据库中查询, 正在开发的 sphinx 0.9.10版本已可存储这些文本数据,作者曾试过,性能和存储上的效果 都不佳,毕竟还没出正式版 本文采用的是第一种方式 在*nix 系统下安装,首先需要以下一些软件支持 软件环境: 操作系统:Centos-5.2 数据库:mysql-5.0.77-3.el5 mysql-devel(如果要使用 sphinxSE 插件存储请使用
搭建coreseek(sphinx+mmseg3)社工库
搭建coreseek(sphinx+mmseg3)社工库环境:Centos6.6 x64 + Nginx1.8 (或Apache2.x)版本:Coreseek-4.1功能演示:/[第一步] 先安装mmseg3安装支持库yum install -y make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel php-devel //如果后面编译时缺少,再重装一次提前安装PHP支持yum remove php php-bcmath php-cli php-common php-devel php-fpm php-gd php-imap php-ldapphp-mbstring php-mcrypt php-mysql php-odbc php-pdo php-pear php-pecl-igbinary php-xmlphp-xmlrpc //如安装先卸载rpm -Uvh /yum/el6/latest.rpmyum install -y php54w php54w-bcmath php54w-cli php54w-common php54w-devel php54w-fpmphp54w-gd php54w-mbstring php54w-mcrypt php54w-mysql php54w-odbc php54w-pdo php54w-pear php54w-pecl-igbinary php54w-xml php54w-xmlrpc php54w-opcache php54w-intl php54w-pecl-memcachecd /optwget /uploads/csft/4.0/coreseek-4.1-beta.tar.gztar zxvf coreseek-4.1-beta.tar.gzcd coreseek-4.1-beta/mmseg-3.2.14./bootstrap./configure --prefix=/usr/local/mmseg3make && make install遇到的问题:error: cannot find input file: src/Makefile.in或者遇到其他类似error错误时...解决方案:依次执行下面的命令,我运行'aclocal'时又出现了错误,解决方案请看下文描述yum -y install libtoolaclocallibtoolize --forceautomake --add-missingautoconfautoheadermake clean安装好'libtool'继续从'aclocal'开始执行上面提到的一串命令,执行完后再运行最开始的安装流程即可。
Sphinx使用手册
Sphinx使用手册在上一篇中,我们完成了Sphinx的安装,在这篇中我们使用php程序操作Sphinx,做个小的站内搜素引擎。
Sphinx集成到程序中,有两种方式:Sphinxapi类、SphinxSE存储引擎。
我们要使用Sphinx需要做以下几件事:1、首先得有数据(安装篇我们已经导入数据了)2、建立Sphinx配置文件(在安装篇我们已经配置完成了)3、生成索引(在安装篇我们也做了)4、启动Sphinx (从这里开始吧)5、使用之(调用api进行查询或使用sphinxSE)一、启用sphinx服务。
想要在程序中使用Sphinx必须开启Sphinx服务。
启动进程命令:searchd-c 指定配置文件--stop 是停止服务--pidfile 用来显式指定一个PID文件。
最好指定,要不然,合并索引时,会报错-p 指定端口/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/sphinx.conf注意:这里启动的服务是searchd ,不是 search。
Sphinx默认的端口是9312端口。
如果出现这个问题:说明端口已经被占用了,可以用netstat -tnl查看下,9312已经运行。
解决的办法是:netstat -apn | grep 9312 找出进程IDkill -9 进程id 再开启就可以了。
二、使用php程序使用sphinx (sphinxapi类)(1)、在php手册中有相应的函数。
需要到coreseek解压包中找到sphinxapi.php文件,放到程序目录下。
cp /lamp/coreseek-3.2.14/csft-3.2.14/api/sphinxapi.php /usr/local/apache2/htdocs/ include 'sphinxapi.php';// 加载Sphinx API$sphinx = new SphinxClient(); //创建sphinx对象$sphinx->SetServer("localhost", 9312); //建立连接,第一个参数sphinx服务器地址,第二个sphinx监听端口$result = $sphinx->query($keyword,"*"); // 执行查询,第一个参数查询的关键字,第二个查询的索引名称,多个索引名称用(逗号)分开,也可以用*表示全部索引。
Coreseek 全文检索服务器 2.0 (Sphinx 0.9.8)参考手册
文档Coreseek 全文检索服务器2.0 (Sphinx 0.9.8)参考手册文档版本:v0.9目录1. 简介1.1. 什么是Sphinx1.2. Sphinx 的特性1.3. 如何获得Sphinx1.4. 许可协议1.5. 作者和贡献者1.6. 开发历史2. 安装2.1. 支持的操作系统2.2. 依赖的工具2.3. 安装Sphinx2.4. 已知的问题和解决方法2.5. Sphinx 快速入门教程3. 建立索引3.1. 数据源3.2. 属性3.3. 多值属性( MV A :multi-valued attributes)3.4. 索引3.5. 数据源的限制3.6. 字符集, 大小写转换, 和转换表3.7. SQL 数据源(MySQL, PostgreSQL)3.8. xmlpipe 数据源3.9. xmlpipe2 数据源3.10. 实时索引更新3.11. 索引合并4. 搜索4.1. 匹配模式4.2. 布尔查询4.3. 扩展查询4.4. 权值计算4.5. 排序模式4.6. 结果分组(聚类)4.7. 分布式搜索4.8. searchd 日志格式5. API 参考5.1. 通用API 方法5.1.1. GetLastError5.1.2. GetLastWarning5.1.3. SetServer5.1.4. SetRetries5.1.5. SetArrayResult5.2. 通用搜索设置5.2.1. SetLimits5.2.2. SetMaxQueryTime5.3. 全文搜索设置5.3.1. SetMatchMode5.3.2. SetRankingMode5.3.3. SetSortMode5.3.4. SetWeights5.3.5. SetFieldWeights5.3.6. SetIndexWeights5.4. 结果集过滤设置5.4.1. SetIDRange5.4.2. SetFilter5.4.3. SetFilterRange5.4.4. SetFilterFloatRange5.4.5. SetGeoAnchor5.5. GROUP BY 设置5.5.1. SetGroupBy5.5.2. SetGroupDistinct5.6. 搜索5.6.1. Query5.6.2. AddQuery5.6.3. RunQueries5.6.4. ResetFilters5.6.5. ResetGroupBy5.7. 额外的方法5.7.1. BuildExcerpts5.7.2. UpdateAttributes6. MySQL 存储引擎(SphinxSE)6.1. SphinxSE 概览6.2. 安装SphinxSE6.2.1. 在MySQL 5.0.x 上编译SphinxSE6.2.2. 在MySQL 5.1.x 上编译SphinxSE6.2.3. SphinxSE 安装测试6.3. 使用SphinxSE7. 报告bugs8. sphinx.conf 选项参考8.1. Data source 配置选项8.1.1. type8.1.2. sql_host8.1.3. sql_port8.1.4. sql_user8.1.5. sql_pass8.1.6. sql_db8.1.7. sql_sock8.1.8. mysql_connect_flags8.1.9. sql_query_pre8.1.10. sql_query8.1.11. sql_query_range 8.1.12. sql_range_step8.1.13. sql_attr_uint8.1.14. sql_attr_bool8.1.15. sql_attr_timestamp8.1.16. sql_attr_str2ordinal8.1.17. sql_attr_float8.1.18. sql_attr_multi8.1.19. sql_query_post8.1.20. sql_query_post_index8.1.21. sql_ranged_throttle8.1.22. sql_query_info8.1.23. xmlpipe_command8.1.24. xmlpipe_field8.1.25. xmlpipe_attr_uint8.1.26. xmlpipe_attr_bool8.1.27. xmlpipe_attr_timestamp8.1.28. xmlpipe_attr_str2ordinal8.1.29. xmlpipe_attr_float8.1.30. xmlpipe_attr_multi8.2. 索引配置选项8.2.1. type8.2.2. source8.2.3. path8.2.4. docinfo8.2.5. mlock8.2.6. morphology8.2.7. stopwords8.2.8. wordforms8.2.9. exceptions8.2.10. min_word_len8.2.11. charset_type8.2.12. charset_table8.2.13. ignore_chars8.2.14. min_prefix_len8.2.15. min_infix_len8.2.16. prefix_fields8.2.17. infix_fields8.2.18. enable_star8.2.19. ngram_len8.2.20. ngram_chars8.2.21. phrase_boundary8.2.22. phrase_boundary_step8.2.23. html_strip8.2.24. html_index_attrs8.2.25. html_remove_elements8.2.26. local8.2.27. agent8.2.28. agent_connect_timeout8.2.29. agent_query_timeout8.2.30. preopen8.2.31. charset_dictpath 8.3. indexer 程序配置选项8.3.1. mem_limit8.3.2. max_iops8.3.3. max_iosize8.4. searchd 程序配置选项8.4.1. address8.4.2. port8.4.3. log8.4.4. query_log8.4.5. read_timeout8.4.6. max_children8.4.7. pid_file8.4.8. max_matches8.4.9. seamless_rotate8.4.10. preopen_indexes8.4.11. unlink_old1. 简介1.1. 什么是SphinxSphinx 是一个在GPLv2 下发布的一个全文检索引擎,商业授权(例如, 嵌入到其他程序中)需要联系我们()以获得商业授权。
sphinx配置-中文分词-PHP调用sphinx课件(2)
./configure --prefix=/usr/local/sphinx --withmysql=/usr/local/mysql make && make install
• 我们需要备份一下配置文件,防止改错不好 处理。 cp sphinx.conf.dist sphinx.conf
sql_query_info WHERE id=$id
= SELECT * FROM documents
}
xmlpipe settings 是XML类型的,直接过去。
211行 这个
source srclthrottled:srcl 继承索引源。
index test1 (只有索引这个里面的值要修改)
sql_pass = sphinxpass #MySQL密码
sql_db = sphinx #MySQL数据库
sql_port = 3306
# MySQL端口
sql_sock = /tmp/mysql.sock
sock文件。
35行
# 如果是linux下需要开启,指定
sql_query_pre = SET NAMES UTF8 # MySQL检索编码 73行
Coreseek
• cd /lamp • tar -zxvf coreseek-3.2.14.tar.gz • 进入到mmseg所在文件夹,先安装中文分词mmseg。 • cd /lamp/coreseek-3.2.14/mmseg-3.2.14/ • ./bootstrap //输入的warming信息可以忽略,error需要解
3.sphinx分布图
相当于数据库的中间层,缓解数据库的压力
Sphinx全套 教程
首先了解一下sphinx全文索引的相关知识官方网站:/官方文档:/docs/中文支持:/中文使用手册下载:/uploads/pdf/sphinx_doc_zhcn_0.9.pdf基本上看看上面的官方教程和中文使用手册,你应该会安装和使用Sphix全文索引,当然,还有一些细节,需要不断的google和baidu,那为了节省大家的时间,就出一个完整的Sphinx安装教程和结合PHPWI ND程序的使用教程(PHPWIND7.5版本支持)。
接下来开始Sphinx的技术之旅吧!考虑到Sphinx全文索引使用的实际需要,主要介绍Sphinx全文索引中文方面的支持。
这里需要感谢李沫南同学对Sphinx全文索引中文支持的贡献!一,Windows下安装Sphinx1,开始前的准备工作来源:/products/ft_down/下载csft3.1:/uploads/csft/3.1/win32/csft3.1.bin.zip下载标准词库:/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数据库配置是否正确。
sphinx中文分词coreseek的配置
coreseek 的配置vi csft.conf第13行改成数据源名称23行修改数据库信息73行打开这两个选项第79行写出要查询的SQL语句根据表与表结构109行根据什么表中的那一列字段来排序256行为对增量数据源的配置暂时全部注释掉271行为主索引 test1 为名字我取名为documentindex276 行 source 设置数据源的来源既是上面配置数据源的名称所以填写 document280 行path设置数据源存放的路径一般把后面的名字改成主索引的名称就是了documentindex,315,321,330 行对停词的设置默认是英文停词这里把他注释掉340行设置编码 charset_type =zh_cn.utf-8然后在后面加上一句charset_dictpath = /usr/local/mmseg/etc/ 中文字典路径353行 UTF8的注释去掉错误操作应该要注释掉477行这里是对增量索引的配置由于刚才把增量源给注释掉了所以这里也暂时先注释掉492行对分布式的设置意义不大关闭agent agent 506和507行或者全部注释掉533行推荐256M配置好过后进入bin目标生成索引/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --all增量索引配置创建一个计数器的表CREATE TABLE `sph_counter` (`counter_id` int(10) unsigned NOT NULL AUTO_INCREMENT,`max_doc_id` int(11) NOT NULL,PRIMARY KEY (`counter_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8修改配置文件主数据源里面:我们需要把欲查询语句改成下面的语句: 13 行Source main{把 sql_query_pre 的改成下面的语句 79 行sql_query_pre = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM documentssql_query = \SELECT id, group_id,UNIX_TIMESTAMP(date_added) AS date_added, title, content \FROM documents \WHERE id<=( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )}256行配置增量索引源 src1throttlet为增量索引源名称:src1为继承的主索引源将其改成:source delta : document{sql_query_pre = set names utf8sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content from documents where id>(select max_doc_id from sph_counter where counter_id=1)}第485行配置增量索引 deltaindex 为增量索引名称 : 后面继承主索引487行 path 写上存放路径通常改掉后面名称为deltaindex就行并在上边加上数据源的来源index deltaindex : documentindex{source = deltapath = /usr/local/coreseek/var/data/deltaindexmorphology = stem_en}配置完成后/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --rotate --all生成所有索引/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --rotatedeltaindex生成增量索引/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --merge documentindex deltaindex合并索引给PHP安装模块tar zxf sphinx-1.1.0.tgz 解压包/usr/local/php/bin/phpize./configure --with-php-config=/usr/local/php/bin/php-config --with-sphinx如果提示出错:make: *** 没有指明目标并且找不到 makefile。
windows下的coreseek安装及PHP调用入门
windows下的coreseek安装及PHP调用入门按:这几天安装coreseek,官方的教程是专业手册,不适合新手入门,网络上有一些文章介绍,但错漏不少,让我走了不少弯路,终于运行成功了。
我下面把安装流程整理一下,希望对新上手的同学有帮助。
把我的运行环境简单说一下:windows XP,装了php/mysql下面进入正题:1.到官网下载coreseek2.到微软官网下载C++运行环境/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9 f2bc1bf&displayLang=zh-cn注意:coreseek3.x和4.x要求的C++环境有差异,详情见这里:/products-install/install_on_windows/3.将下载的coreseek压缩包解压到你觉得合适的位置,把主文件夹的名字改为你觉得合适的名字。
执行C++运行环境的文件。
coreseek就算安装完了。
4.MYSQL测试:在MYSQL的test数据库中,导入coreseek文件夹下的sql文件: var\test\documents.sql 这样就生成了测试用的数据表 test.documents下面这一步很关键,我就在这一步上被卡了好长时间:打开etc下的csft_mysql.conf,填入登陆mysql需要的基本信息。
但是很关键的是,千万不要用记事本、写字板这些文本编辑器编辑,不知什么原因,用这些编辑器编辑后,里面可能就产生了coreseek系统不能识别的字符。
以前遇到过类似情况,所以今天遇到这种情况,郁闷了差不多一个小时后,终于想到了原因。
然后我用NodePad++进行编辑,就解决了这个问题。
5.建立索引通过修改csft_mysql.conf的配置或者创建新的conf文件,就可以指定要建立索引的数据表以及建立索引的方式。
如何配置请参看官方手册,或者这篇文章:/Linux/2013-05/83857.htm这里只是对coreseek默认的测试数据表 test.documents,以其默认的方式建立索引。
Sphinx SE 安装手册
SphinxSE的安装SphinxSE是一个可以编译进MySQL 5.x版本的MySQL存储引擎,尽管被称作“存储引擎”,SphinxSE自身其实并不存储任何数据。
它其实是一个允许MySQL服务器与searchd交互并获取搜索结果的嵌入式客户端,所有的索引和搜索都发生在MySQL之外。
它有一个很大的特点呢,就是如果不支持Sphinxapi的语言,也可以使用Sphinx,理论上说,Sphinapi能做的,SphinxSE都能做。
第一步、安装SphinxSESphinxSE的插件,在Sphinx(Coreseek)解压文件中/sphinx/mysqlse(1)、删除mysql因为安装sphinxSE是嵌入到MySQL中,所以我们要重新编译安装一次MySQL。
(2)、复制sphinx中的mysqlse创建sphinx文件夹:复制mysqlse文件夹到mysql的制定目录下(3)、编译安装复制完后进入到mysql源码文件进行编译安装,如下:cd/lamp/m环境检测:./configure --prefix=/usr/local/mysql --with-charset=utf8--enable-thread-safe-client --enable-assembler --with-readline --with-big-tables --with-named-curses-libs=/usr/lib/libncursesw.so.5 --with-plugins=sphinx环境检测的时候如果出现这个configure: error: unknown plugin: sphinx错误没执行sh BUILD/autorun.sh的原因。
sh BUILD/autorun.sh执行后还会报个错误:BUILD/autorun.sh: line 41: aclocal: command not foundCan't execute aclocal是因为aclocal的问题,需要安装3个依赖包在我们的镜像中都有,直接yum安装就可以。
sphinx详细安装配置文档
sphinx详细安装配置⽂档SphinxSphinxSphinxSphinx详细安装配置详细安装配置详细安装配置详细安装配置项⽬中需要重新做⼀个关于商品的全⽂搜索功能,于是想到了⽤Sphinx,因为需要中⽂分词,所以选择了Sphinx for chinese,当然你也可以选择coreseek,建议这两个中选择⼀个,暂时不要选择原版Sphinx(对中⽂的⽀持不是很好).⼜因为服务器所⽤ MySQL在当时编译时并没有编译Sphinx扩展,⽽重新编译MySQL并加⼊Sphinx暂时⼜⽆法实现(项⽬⽤到了多台服务器,在不影响现有业务的情况下不可能去重新编译MySQL的),所以采⽤的是程序通过API来外部调⽤Sphinx.Sphinx⾃带的API有 PHP,Python,Ruby,Java等众多版本,所以基本也够⽤了,本⼈使⽤的编程语⾔是PHP所以下⽂的条⽤⽰例采⽤的是PHP版的API.⼀.安装及配置Sphinx及准备测试数据1.安装前的准备⼯作(1)请确认安装了MySQL,Gcc及常⽤的开发环境包(2)下载sphinx-for-chinese-1.10.1及中⽂分词词典xdict_1.1(下⾯两个⽅式,选⼀个即可)[1]到sphinx-for-chinese官⽅下载(强烈推荐使⽤这个)cd /usr/local/srcwget -c/files/sphinx-for-chinese-1.10.1-dev-r2287.tar.gzwget -c/files/xdict_1.1.tar.gz[2]到本站下载(国外vps,性能不怎么好,⽽且速度慢,不推荐,只做备⽤)cd /usr/local/srcwget -c/source/soft/sphinx-for-chinese-1.10.1/sphinx-for-chinese-1.10.1-dev-r2287.tar.gzwget -c/source/soft/sphinx-for-chinese-1.10.1/xdict_1.1.tar.gz2.安装sphinx-for-chinese-1.10.1cd /usr/local/srctar zxvf sphinx-for-chinese-1.10.1-dev-r2287.tar.gzcd sphinx-for-chinese-1.10.1-dev-r2287#MySQL安装在默认位置的使⽤如下命令./configure --prefix=/usr/local/sphinx-for-chinese-1.10.1 --with-mysql 如果出现如下图所⽰错误,表明MySQL不是安装在默认位置,请执⾏下⾯的命令# 如果MySQL不是安装在默认位置(特别是⾃⼰编译MySQL的,请注意),请指定MySQL的相关位置,主要是MySQL的include和lib⽬录 (Sphinx编译的时候要⽤到⾥⾯的.h头⽂件),--with-mysql-includes及--with-mysql-libs就是为了指定这两个位置的./configure --prefix=/usr/local/sphinx-for-chinese-1.10.1--with-mysql-includes=/usr/local/webserver/mysql/include/mysql--with-mysql-libs=/usr/local/webserver/mysql/lib/mysql显⽰如下图所⽰内容时,表⽰可以接着执⾏下⾯的make及make install命令makemake install#最后执⾏命令ls /usr/local/sphinx-for-chinese-1.10.1/如果显⽰bin,etc和var三个⽬录表⽰安装成功3.让Sphinx⽀持中⽂分词cd /usr/local/srctar zxvf xdict_1.1.tar.gz/usr/local/sphinx-for-chinese-1.10.1/bin/mkdict xdict_1.1.txtxdict_1.1 哪⾥都可以,包含的时候4Q 驆如果提⽰bin/mkdict: error while loading shared libraries:libmysqlclient.so.16等错误(以下命令中的libmysqlclient.so.16.0.0的位置取决于我们mysql编译安装的位置)ln -s /usr/local/webserver/mysql/lib/mysql/libmysqlclient.so.16.0.0/usr/lib/libmysqlclient.so.16再次执⾏/usr/local/sphinx-for-chinese-1.10.1/bin/mkdict xdict_1.1.txtxdict_1.1#提⽰Chinese dictionary was successfully created!表⽰中⽂分词词典⽣成成功cp xdict_1.1 /usr/local/sphinx-for-chinese-1.10.1/etc/xdict_1.14.配置Sphinxvi /usr/local/sphinx-for-chinese-1.10.1/etc/sphinx.conf输⼊以下内容# sphinx基本配置# 索引源source goods_src{# 数据库类型type = mysql# MySQL主机IPsql_host = localhost# MySQL⽤户名sql_user = sphinxuser# MySQL密码sql_pass = sphinxpass# MySQL数据库sql_db = sphinx# MySQL端⼝(如果防⽕墙有限制,请开启)sql_port= 3306# MySQL sock⽂件设置(默认为/tmp/mysql.sock,如果不⼀样,请指定)sql_sock = /tmp/mysql.sock 剉a # MySQL检索编码(数据库⾮utf8的很可能检索不到) sql_query_pre = SET NAMES UTF8# 获取数据的SQL语句sql_query = SELECT goods_id,goods_id ASgoods_id_new,goods_name,goods_color,goods_name ASgoods_name_search,goods_color AS goods_color_search From goods_test# 以下是⽤来过滤或条件查询的属性(以下字段显⽰在查询结果中,不在下⾯的字段就是搜索时要搜索的字段,如SQL语句中的goods_color_search,goods_name_search)# ⽆符号整型#goods_id为主键,如果加在这⾥在⽣成索引的时候会报attribute'goods_id' not found,这⾥⽤goods_id_new来变通sql_attr_uint = goods_id_new# 字符串类型sql_attr_string = goods_namesql_attr_string = goods_color# ⽤于命令界⾯端(CLI)调⽤的测试(⼀般来说不需要)#sql_query_info = SELECT * FROM goods_test Where goods_id =$goods_id;}# 索引index goods{# 索引源声明source = goods_src# 索引⽂件的存放位置path = /usr/local/sphinx-for-chinese-1.10.1/var/data/goods# ⽂件存储模式(默认为extern)docinfo = extern# 缓存数据内存锁定mlock = 0# 马⽒形态学(对中⽂⽆效)morphology = none# 索引词最⼩长度min_word_len = 1 ict_1.1.txtxdict_1.1#提⽰ChinesQ > ? # 数据编码(设置成utf8才能索引中⽂)charset_type = utf-8# 中⽂分词词典chinese_dictionary =/usr/local/sphinx-for-chinese-1.10.1/etc/xdict_1.1# 最⼩索引前缀长度min_prefix_len = 0# 最⼩索引中缀长度min_infix_len = 1# 对于⾮字母型数据的长度切割(for CJK indexing)ngram_len = 1# 对否对去除⽤户输⼊查询内容的html标签html_strip = 0}# 索引器设置indexer{# 内存⼤⼩限制默认是 32M, 最⼤ 2047M, 推荐为 256M 到 1024M之间mem_limit = 256M}# sphinx服务进程search的相关配置searchd{# 监测端⼝及形式,⼀下⼏种均可,默认为本机9312端⼝# listen = 127.0.0.1# listen = 192.168.0.1:9312# listen = 9312# listen = /var/run/searchd.sock# search进程的⽇志路径log = /usr/local/sphinx-for-chinese-1.10.1/var/log/searchd.log# 查询⽇志地址query_log = /usr/local/sphinx-for-chinese-1.10.1/var/log/query.log# 读取超时时间read_timeout = 5sql_sock = /tmp/mysql.sock 剉/Q ? # 请求超时市时间client_timeout = 300# searche进程的最⼤运⾏数max_children = 30# 进程ID⽂件pid_file =/usr/local/sphinx-for-chinese-1.10.1/var/log/searchd.pid# 最⼤的查询结果返回数max_matches = 1000# 是否⽀持⽆缝切换(做增量索引时需要)seamless_rotate = 1# 在启动运⾏时是否提前加载所有索引⽂件preopen_indexes = 0# 是否释放旧的索引⽂件unlink_old = 1# MVA跟新池⼤⼩(默认为1M)mva_updates_pool = 1M# 最⼤允许的⽹络包⼤⼩(默认8M)max_packet_size = 8M# 每个查询最⼤允许的过滤器数量(默认256)max_filters = 256#每个过滤器最⼤允许的值的个数(默认4096)max_filter_values = 4096# 每个组的最⼤查询数(默认为32)max_batch_queries = 32}# Sphinx配置⽂件结束中⽂在linux下可能会看到乱码,不⽤管5.创建测试数据库并添加测试内容(请先连上⾃⼰的MySQL数据库),在MySQL中执⾏如下命令 -1.10.1/var/log/query.log# $Q 鈲 mysql> create database sphinx collate 'utf8_general_ci';mysql> grant all privileges on sphinx.* to 'sphinxuser'@'%' identifiedby 'sphinxpass';mysql> grant all privileges on sphinx.* to 'sphinxuser'@'localhost'identified by 'sphinxpass';mysql> use sphinx;mysql> CREATE TABLE IF NOT EXISTS `goods_test` (\`goods_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '商品id',\ `goods_name` varchar(255) NOT NULL COMMENT '商品名称',\`goods_color` varchar(60) NOT NULL COMMENT '商品颜⾊',\PRIMARY KEY (`goods_id`)\) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='商品表,sphinx⽰例' AUTO_INCREMENT=11 ;\mysql> INSERT INTO `goods_test` (`goods_id`, `goods_name`, `goods_color`) VALUES\(1, '热卖时尚双肩背包', '⿊⾊'),\(2, '热卖时尚电脑双肩背包', '灰⾊'),\(3, '缤纷炫动时尚化妆包', '⿊⾊'),\(4, '缤纷炫动时尚化妆包', '蓝⾊'),\(5, '缤纷炫动时尚化妆包', '粉红'),\(6, '极致性感⼥款衬衫', '⿊⾊'),\(7, '个性宣⾔男款短袖衬衫', '蓝⾊'),\(8, '个性宣⾔男款短袖衬衫', '红⾊'),\(9, '个性宣⾔男款短袖衬衫', '绿⾊'),\(10, '个性宣⾔男款短袖衬衫', '⿊⾊');\好了,万事俱备了,可以开始实战操作Sphinx了⼆.实战操作Sphinx1.建⽴索引(如果配置⽂件有改动,应该重新⽣成索引⽂件,如果下⾯第3点中的searchd进程已经开启的话,应先关闭)#⽣成goods索引[需要确保要连接的主机的MySQL数据库正常运⾏,并且3306端⼝可以访问]/usr/local/sphinx-for-chinese-1.10.1/bin/indexer -c/usr/local/sphinx-for-chinese-1.10.1/etc/sphinx.conf goods#如果配置⽂件⾥有多个索引,需要⼀次⽣成使⽤--all参数/usr/local/sphinx-for-chinese-1.10.1/bin/indexer -c/usr/local/sphinx-for-chinese-1.10.1/etc/sphinx.conf --all2.在linux命令⾏下测试搜索/usr/local/sphinx-for-chinese-1.10.1/bin/search -c/usr/local/sphinx-for-chinese-1.10.1/etc/sphinx.conf 个性⿊⾊ sql_port= 3306# MySQL sock⽂件设置(膖Q Gx?搜索结果如下图⽰3.开启守护进程(供API调⽤,如果配置⽂件改动,应重新启动这个进程,不然搜到的数据不是最新)/usr/local/sphinx-for-chinese-1.10.1/bin/searchd -c/usr/local/sphinx-for-chinese-1.10.1/etc/sphinx.conf & #执⾏后记得再按回车# 防⽕墙需要开放9312端⼝供外部访问9312端⼝(3306是MySQL的端⼝)/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT/sbin/iptables -I INPUT -p tcp --dport 9312 -j ACCEPT/etc/rc.d/init.d/iptables save三.外部API调⽤(PHP版)注意使⽤时前提是执⾏了如下命令,⽽且防⽕墙也开启了9312端⼝/usr/local/sphinx-for-chinese-1.10.1/bin/searchd -c/usr/local/sphinx-for-chinese-1.10.1/etc/sphinx.conf & #执⾏后记得再按回车1. 把/usr/local/src/sphinx-for-chinese-1.10.1-dev-r2287/api/sphinxapi.php弄出来,和下⾯第2点中的search.php放在同级⽬录(这个只是⽰例,放在哪⾥都可以,包含的时候找到正确的sphinxapi.php的位置即可)2.编辑search.php⽂件,内容如下(具体内容请读者⾃⼰定,我这⾥只是⽰例) <?phpheader('Content-Type: text/html;charset="UTF-8"');if ($_GET) {// 关键词$keyword = urldecode(trim(strip_tags($_GET['keyword'])));if ($keyword) {// 包含Sphinx的api⽂件 require_once 'sphinxapi.php';// sphinx服务器地址$server = '192.168.128.130';// 端⼝$port = 9312;// 索引名为*时表⽰搜索所有索引$indexName = 'goods';// 分页页码$page = intval($_GET['page']) > 1 ? intval($_GET['page']) : 1;// 每页显⽰的数量$pageSize = 30;$sphinx = new SphinxClient();// 建⽴连接$sphinx->SetServer($server, $port);// 连接超时时间(⾮常必要,⽐如sphinx服务器挂了等异常情况) 单位为s,秒$sphinx->SetConnectTimeout(3);// 最⼤查询时间单位为ms,毫秒$sphinx->SetMaxQueryTime(2000);// 按分页取结果$sphinx->SetLimits(($page-1)*$pageSize, $pageSize); //第⼀个参数为offset,第⼆个参数为limit// 模式// $sphinx->SetMatchMode(SPH_MATCH_EXTENDED);// 取到的原始数据$orgDatas = $sphinx->Query($keyword, $indexName);// 调试⽤,如果有错误的话,可以打印$errors的值$errors = $sphinx->GetLastError();var_dump($errors);echo '<pre>';var_dump($orgDatas);/* // 下⾯是对结果的处理$datas = array('goods'=>array(),'total'=>0);if ($orgDatas['total'] > 0) {$datas['total'] = $orgDatas['total'];foreach ($orgDatas['matches'] AS $val) {$val['attrs']['goods_id'] =$val['attrs']['goods_id_new'];unset($val['attrs']['goods_id_new']);$datas['goods'][] = $val['attrs'];}}var_dump($datas); ?./configure --prefix=/usr/local/sphinx-for_Q lT? */}} else {echo '<form method="get"><input type="type" name="keyword"><input type="submit" value="商品搜索"></form>';}>代码可以点此处下载/source/soft/sphinx-for-chinese-1.10.1/sphinxapi.tar.gz更多详细配置请参看/usr/local/sphinx-for-chinese-1.10.1/etc/sphinx.conf.dist⽂件⾥⾯有包括实时索引,增量索引等很多内容,英⽂原版的,很详细 ?。
Sphinx环境安装与部署
Coreseek/Sphinx环境安装与部署一、环境安装:1. Microsoft Visual C++ 运行环境,一般系统自带;如果运行提示“应用程序错误”,则需要安装coreseek-4.x版本, Microsoft Visual C++ 2008 运行环境 (x86)(32位系统和64位系统均安装该版本);注意:是运行环境,不是开发环境,才1.7M大小,从微软官方网站下载Microsoft Visual C++ 2008 Redistributable Package (x86),然后安装(压缩包里面有我下好的可以直接使用);2. 安装 Coreseek-win32(必须):【2011年1月12日更新,支持命令行中文搜索测试】从Coreseek官方网站下载/uploads/csft/4.0/corese ek-4.1-win32.zip(压缩包里面有我下好的可以直接使用);3. 安装Python 2.6 Windows (x86)(必须,32位系统和64位系统均安装该版本),从ActiveState官方网站下载ActivePython 2.6 Windows (x86),然后安装;也可从华军软件园下载ActivePython 2.6 Windows (x86),然后安装(压缩包里面有我下好的可以直接使用);4.安装cx_Oracle-5.0.4-11g.win32-py2.6.msi这个是针对python连接oracle的插件,压缩包里面也有直接安装就行。
二、Coreseek/Sphinx安装:1.安装前,建议查看:Win版本README.txt;如遇到问题,就是环境安装出错;2.下载coreseek win32版本:coreseek 4.1;3.点击压缩包,压缩出来即可。
4.目录中的README.txt文件中,有所有配置和test测试文件的说明。
三、python连接oracleSphinx使用oracle数据源需要python脚本的支持才可以创建索引。
Coreseek全文检索服务器2.0(Sphinx0.9.8)参考手册
Coreseek全⽂检索服务器2.0(Sphinx0.9.8)参考⼿册⽂档Coreseek 全⽂检索服务器2.0 (Sphinx 0.9.8)参考⼿册⽂档版本:v0.9⽬录1. 简介1.1. 什么是Sphinx1.2. Sphinx 的特性1.3. 如何获得Sphinx1.4. 许可协议1.5. 作者和贡献者1.6. 开发历史2. 安装2.1. ⽀持的操作系统2.2. 依赖的⼯具2.3. 安装Sphinx2.4. 已知的问题和解决⽅法2.5. Sphinx 快速⼊门教程3. 建⽴索引3.1. 数据源3.2. 属性3.3. 多值属性( MV A :multi-valued attributes)3.4. 索引3.5. 数据源的限制3.6. 字符集, ⼤⼩写转换, 和转换表3.7. SQL 数据源(MySQL, PostgreSQL)3.8. xmlpipe 数据源3.9. xmlpipe2 数据源3.10. 实时索引更新3.11. 索引合并4. 搜索4.1. 匹配模式4.2. 布尔查询4.3. 扩展查询4.4. 权值计算4.5. 排序模式4.6. 结果分组(聚类)4.7. 分布式搜索4.8. searchd ⽇志格式5. API 参考5.1. 通⽤API ⽅法5.1.1. GetLastError5.1.2. GetLastWarning5.1.3. SetServer5.1.4. SetRetries5.1.5. SetArrayResult5.2. 通⽤搜索设置5.2.1. SetLimits5.2.2. SetMaxQueryTime5.3. 全⽂搜索设置5.3.1. SetMatchMode5.3.2. SetRankingMode5.3.3. SetSortMode5.3.4. SetWeights5.3.5. SetFieldWeights5.3.6. SetIndexWeights5.4. 结果集过滤设置5.4.1. SetIDRange5.4.2. SetFilter5.4.3. SetFilterRange5.4.4. SetFilterFloatRange5.4.5. SetGeoAnchor5.5. GROUP BY 设置5.5.1. SetGroupBy5.5.2. SetGroupDistinct5.6. 搜索5.6.1. Query5.6.2. AddQuery5.6.3. RunQueries5.6.4. ResetFilters5.6.5. ResetGroupBy5.7. 额外的⽅法5.7.1. BuildExcerpts5.7.2. UpdateAttributes6. MySQL 存储引擎(SphinxSE)6.1. SphinxSE 概览6.2. 安装SphinxSE6.2.1. 在MySQL 5.0.x 上编译SphinxSE6.2.2. 在MySQL 5.1.x 上编译SphinxSE6.2.3. SphinxSE 安装测试6.3. 使⽤SphinxSE7. 报告bugs8. sphinx.conf 选项参考8.1. Data source 配置选项8.1.1. type8.1.2. sql_host8.1.3. sql_port8.1.4. sql_user8.1.5. sql_pass8.1.6. sql_db8.1.7. sql_sock8.1.8. mysql_connect_flags8.1.9. sql_query_pre8.1.10. sql_query8.1.11. sql_query_range 8.1.12. sql_range_step 8.1.13. sql_attr_uint8.1.14. sql_attr_bool8.1.15. sql_attr_timestamp8.1.16. sql_attr_str2ordinal8.1.17. sql_attr_float8.1.18. sql_attr_multi8.1.19. sql_query_post8.1.20. sql_query_post_index8.1.21. sql_ranged_throttle8.1.22. sql_query_info8.1.23. xmlpipe_command8.1.24. xmlpipe_field8.1.25. xmlpipe_attr_uint8.1.26. xmlpipe_attr_bool8.1.27. xmlpipe_attr_timestamp8.1.28. xmlpipe_attr_str2ordinal8.1.29. xmlpipe_attr_float8.1.30. xmlpipe_attr_multi8.2. 索引配置选项8.2.1. type8.2.2. source8.2.3. path8.2.4. docinfo8.2.5. mlock8.2.6. morphology8.2.7. stopwords8.2.8. wordforms8.2.9. exceptions8.2.10. min_word_len8.2.11. charset_type8.2.12. charset_table8.2.13. ignore_chars8.2.14. min_prefix_len8.2.15. min_infix_len8.2.16. prefix_fields8.2.17. infix_fields8.2.18. enable_star8.2.19. ngram_len8.2.20. ngram_chars8.2.21. phrase_boundary8.2.22. phrase_boundary_step8.2.23. html_strip8.2.24. html_index_attrs8.2.25. html_remove_elements8.2.26. local8.2.27. agent8.2.28. agent_connect_timeout8.2.29. agent_query_timeout8.2.30. preopen8.2.31. charset_dictpath 8.3. indexer 程序配置选项8.3.1. mem_limit8.3.2. max_iops8.3.3. max_iosize8.4. searchd 程序配置选项8.4.1. address8.4.2. port8.4.3. log8.4.4. query_log8.4.5. read_timeout8.4.6. max_children8.4.7. pid_file8.4.8. max_matches8.4.9. seamless_rotate8.4.10. preopen_indexes8.4.11. unlink_old1. 简介1.1. 什么是SphinxSphinx 是⼀个在GPLv2 下发布的⼀个全⽂检索引擎,商业授权(例如, 嵌⼊到其他程序中)需要联系我们(/doc/9ee0e07feefdc8d377ee320a.html )以获得商业授权。
Centos安装coreseek
1.下载coreseek软件(3.2.14)/uploads/csft/3.2/coreseek-3.2.14.tar.gz2.安装依赖软件yum install gcc make gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel3.解压软件包tar xzvf coreseek-3.2.14.tar.gz4.软件目录csft-x.y.z:coreseek源代码mmseg-i.j.k:mmseg源代码testpack:测试配置和数据包5.安装mmseg(一般不会出现什么问题)$ cd mmseg-3.2.14$ ./bootstrap #输出的warning信息可以忽略,如果出现error则需要解决$ ./configure --prefix=/usr/local/mmseg3$ make && make install$ cd ..6.安装csft(会出现AutoConf版本过低要求2.62以上的版本)$ cd csft-3.2.14 或者cd csft-4.0.1$ 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 ..如果出现autoconf的问题请手工下载进行安装/services/custombuild/autoconf-2.68.tar.gztar xzf autoconf-2.68.tar.gzcd autoconf-2.61./configure --prefix=/usrmakemake install安装好autoconf之后再重新安装csft7.测试coreseek##测试mmseg分词,coreseek搜索(需要预先设置好字符集为zh_CN.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 网络搜索如果正文无法正确的显示需要设置一、CentOS系统访问 ,发现中文乱码于是用以前的方式:yum -y install fonts-chineseCentOS系统安装后,还是不能显示中文字体。
ThinkPHP中如何使用coreseek(sphinx)
ThinkPHP中如何使用coreseek(sphinx)2014年03月31日 ? MySQL, PHP, 数据库, 编程开发 ? 共 2753字 ? 字号小中大 ? 暂无评论在网上找了很久,thinkphp是没有sphinx扩展的,那么我们可以自己扩展一个用,今天搞了好久,只能总结一点thinkphp调用sphinxapi 的一段小代码首先我们把coreseek下载好,命名为coreseek,我们找到coreseek/etc中的csft_mysql.conf修改这个配置文件#源定义source lemai{type = mysqlsql_host = localhostsql_user = rootsql_pass = 123sql_db = lemaisql_port = 3306sql_query_pre = SET NAMESutf8sql_query = SELECT id,title,content,name FROM shop#sql_query第一列id需为整数#title、content作为字符串/文本字段,被全文索引sql_attr_uint = sid #从SQL读取到的值必须为整数sql_attr_timestamp = time #从SQL读取到的值必须为整数,作为时间属性sql_query_info_pre = SET NAMES utf8 #命令行查询时,设置正确的字符集sql_query_info = SELECT * FROM shop WHERE name=$id #命令行查询时,从数据库读取原始数据信息}#index定义index lemai{source = lemai #对应的source名称path = var/data/mysql #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...docinfo = externmlock = 0morphology = nonemin_word_len = 1html_strip = 0#中文分词配置,详情请查看:/products-install/coreseek_mmseg/#charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾charset_dictpath = C:/AppServ/www/thinkphp/ThinkPHP/Ext end/Vendor/Coreseek/etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:charset_type = zh_cn.utf-8#charset_table =ngram_len = 0}#全局index定义indexer{mem_limit = 128M}#searchd服务定义searchd{listen = 9312read_timeout = 5max_children = 30max_matches = 1000seamless_rotate = 0preopen_indexes = 0unlink_old = 1pid_file = var/log/searchd_mysql.pid #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...log = var/log/searchd_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...query_log = var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:}然后把coreseek拷贝一份到thinkphp的核心文件Extend/Vendor下.打开cmd cd到coreseekbin\indexer -c etc\csft_mysql.conf (mysql,等)数据库名创建索引创建完之后我们可以在var\data下看到一堆文件,此时说明创建成功bin\searchd -c etc\csft_mysql.conf --console 启动进程(检查端口9312是否有这个进程,有就OK)命令行查询echo 一号店|iconv -f gbk -t utf-8 | search -c etc\csft_mysql.conf --stdin | iconv -f utf-8 -t gbk 中文索引查询然后就可以在控制器中进行PHP连接sphinxapi进行测试了Vendor('Coreseek.api.sphinxapi');//加载第三方扩展包的文件文件名不包含class$db = newPDO('mysql:host=localhost;port=3306;dbname=lemai', 'root', '123',array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'));//实例化PDO$spx = new SphinxClient();//实例化SphinxClient$spx -> SetServer('127.0.0.1',9312);$spx->SetConnectTimeout ( 3 );$spx->SetArrayResult ( true );$spx -> SetMatchMode(SPH_MATCH_ANY); $result = $spx -> query('1','*');$ids = join(",",array_keys($result['matches'])); $sql = "SELECT * FROM shop where id in ({$ids})"; $stmt = $db->query($sql);$r = $stmt->FETCHALL(PDO::FETCH_ASSOC); echo "<pre>";var_dump($r);。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Sphinx 安装指南
说明:
Sphinx是一个全文搜索引擎.
如果需要支持中文分词.可以安装SFC或者是Coreseek,这里安装的是Coreseek
安装sphinx
wget /downloads/sphinx-0.9.9.tar.gz
tar zxvf sphinx-0.9.9.tar.gz
cd sphinx-0.9.9
./configure --prefix=/usr/local/sphinx --with-mysql make && make install
下载Coreseek
wget /uploads/csft/3.2/coreseek-3.2.14.tar.gz
tar xzvf coreseek-3.2.14.tar.gz
cd coreseek-3.2.14
安装中文分词mmseg
cd mmseg-3.2.14
./bootstrap
./configure --prefix=/usr/local/mmseg3
make && make install
说明:红色命令bootstrap ubuntu环境下,需要使用ACLOCAL_FLAGS="-I sr/share/aclocal" ./bootstrap
安装coreseek
yum install mysql-devel libxml2-devel expat-devel
cd ../csft-3.2.14
sh buildconf.sh
./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
说明:Yum 这条命令是安装一些必须的组件。
可能有些系统,这些组件已安装好。
使用说明
系统自动检测的配置文件路径为:/usr/local/coreseek/etc/csft.conf
启动:
mkdir -p /dev/shm/sphinx/
/usr/local/coreseek/bin/indexer --all
/usr/local/coreseek/bin/searchd
停止:
/usr/local/coreseek/bin/searchd --stop
配置文件实例:
#MySQL数据源配置,详情请查看:/products-install/mysql/
#请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库
#源定义
source item_items_src
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass =
sql_db = test
sql_port = 3306
sql_query_pre = SET NAMES utf8
sql_query = SELECT \
item_id, item_name \
FROM item_items \
WHERE 1
#sql_attr_uint = group_id #从SQL读取到的值必须为整数
#sql_attr_timestamp = date_added #从SQL读取到的值必须为整数,作为时间属性
#sql_query_info_pre = SET NAMES utf8 #命令行查询时,设置正确的字符集
#sql_query_info = SELECT * FROM documents WHERE id=$id #命令行查询时,从数据库读取原始数据信息
}
#index定义
index item_items
{
source = item_items_src #对应的source名称
path = /dev/shm/sphinx/item_items #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
html_strip = 0
#中文分词配置,详情请查看:/products-install/coreseek_mmseg/
charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾
#charset_dictpath = etc/ #Windows环境下设置,/符号结尾,最好
给出绝对路径,例如:C:/usr/local/coreseek/etc/...
charset_type = zh_cn.utf-8
}
#全局index定义
indexer
{
mem_limit = 128M
}
#searchd服务定义
searchd
{
listen = 9312
read_timeout = 5
max_children = 30
max_matches = 1000
seamless_rotate = 0
preopen_indexes = 0
unlink_old = 1
pid_file = /usr/local/coreseek/var/log/searchd_mysql.pid #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
log = /usr/local/coreseek/var/log/searchd_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
query_log = /usr/local/coreseek/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
}。