CoreSeek Mysql 安装与测试(中文分词与中文全文检索)

卢松松博客 关注创业者、自媒体人和站长的网站

CoreSeek是一款专门为中文免费开源的中文全文检索系统,它是一个支持Tb级的全文数据索引了,下面我们来看看CoreSeek Mysql 安装与测试.

CoreSeek安装比较麻烦,官方手册对此的支持并不算很好,CoreSeek是基于Sphinx的中文的分词和全文检索软件,本文是在MAC OS X系统下安装和调试CoreSeek.

安装过程中报错如果是警告warning则忽略,如果是错误error,则必须要处理,CoreSeek是支持三种数据来源的,一种是众所周知的Mysql,一种是XML文件,另一种是Python,而Python则是万能数据类型,在本CoreSeek安装测试教程中只示例数据源是XML文件和MYSQL.

官方手册地址:http://www.coreseek.cn/products-install/install_on_macosx

一、设置环境变量

  1. $exportPATH=/usr/local/bin:$PATH
  2. $exportLC_ALL=zh_CN.UTF-8
  3. $export.UTF-8

二、安装依赖库:m4、autoconf、automake、libtool。

注意:不要brew install 来安装,因为对安装的库的版本有要求.

  1. $curl-O-Lhttp://mirrors.kernel.org/gnu/m4/m4-1.4.13.tar.gz
  2. $tar-xzvfm4-1.4.13.tar.gz
  3. $cdm4-1.4.13
  4. $sudo./configure--prefix=/usr/local/opt
  5. $sudomake
  6. $sudomakeinstall
  7. $cd..
  8. $curl-O-Lhttp://mirrors.kernel.org/gnu/autoconf/autoconf-2.65.tar.gz
  9. $tar-xzvfautoconf-2.65.tar.gz
  10. $cdautoconf-2.65
  11. $sudo./configure--prefix=/usr/local/opt
  12. $sudomake
  13. $sudomakeinstall
  14. $cd..
  15. $curl-O-Lhttp://mirrors.kernel.org/gnu/automake/automake-1.11.tar.gz
  16. $tarxzvfautomake-1.11.tar.gz
  17. $cdautomake-1.11
  18. $./configure--prefix=/usr/local/opt
  19. $sudomake
  20. $sudomakeinstall
  21. $cd..
  22. $curl-O-Lhttp://mirrors.kernel.org/gnu/libtool/libtool-2.2.6b.tar.gz
  23. $tarxzvflibtool-2.2.6b.tar.gz
  24. $cdlibtool-2.2.6b
  25. $sudo./configure--prefix=/usr/local/opt
  26. $sudomake
  27. $sudomakeinstall
  28. $cd..

三、安装Mysql

1、mysql 的安装自行安装

2、查找mysql头文件地址和库文件地址,我用brew install mysql,安装的Mysql,头文件地址和库文件地址分别是/usr/local/Cellar/mysql/5.6.17_1/include/mysql 和 /usr/local/Cellar/mysql/5.6.17_1/lib

头文件地址就是mysql.h所在的目录,库文件地址就是libmysqlclient.a所在的目录.

四、下载Coreseek

  1. $curl-O-Lhttp://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
  2. $tarxzvfcoreseek-3.2.14.tar.gz
  3. $cdcoreseek-3.2.14

在coreseek-3.2.14文件夹下有mmseg和csft和testpack,mmseg是分词服务,csft是CoreSeek的核心服务,testpack是测试用例.

五、安装mmseg

  1. $cdmmseg-3.2.14
  2. $sudo./bootstrap
  3. $sudo./configure--prefix=/usr/local/opt/mmseg3
  4. $sudomake
  5. $sudomakeinstall
  6. $cd..

在make的时候,可能会报错,如下.

  1. fileincludedfromcss/ThesaurusDict.cpp:6:
  2. ../src/css/ThesaurusDict.h:12:17:error:expectednamespacename
  3. usingnamespace__gnu_cxx;
  4. ^
  5. css/ThesaurusDict.cpp:79:15:warning:resultofcomparisonagainstastring
  6. literalisunspecified(usestrncmpinstead)[-Wstring-compare]
  7. if(filename=="-"){
  8. ^~~~
  9. css/ThesaurusDict.cpp:116:15:warning:resultofcomparisonagainstastring
  10. literalisunspecified(usestrncmpinstead)[-Wstring-compare]
  11. if(filename!="-"){
  12. ^~~~
  13. 2warningsand1errorgenerated.
  14. make[2]:***[ThesaurusDict.lo]Error1
  15. make[1]:***[install-recursive]Error1

这个时候make进程已经终止,原因是因为编译器版本太高导致的,修改方法:1是降低编译器版本,反正我打死也不愿意,方法2如下:

  1. vimsrc/css/ThesaurusDict.h
  2. ###在头部找到:#include<string>
  3. ###再其下加入一行代码:
  4. #include<ext/hash_map>

修改完后保存退出,继续重新sudo make一下,就没有error级错误了,然后sudo make install即可.

六、安装coreseek

  1. $cdcsft-3.2.14
  2. $sudoshbuildconf.sh
  3. $sudo./configure--prefix=/usr/local/opt/coreseek--without-unixodbc--with-mmseg--with-mmseg-includes=/usr/local/opt/mmseg3/include/mmseg/--with-mmseg-libs=/usr/local/opt/mmseg3/lib/--with-mysql--with-mysql-includes=/usr/local/Cellar/mysql/5.6.17_1/include/mysql--with-mysql-libs=/usr/local/Cellar/mysql/5.6.17_1/lib
  4. $sudomake//phpfensi.com
  5. $sudomakeinstall
  6. $cd..

在./configure时,参数--with-mysql-includes是mysql头文件位置,--with-mysql-libs是mysql库文件位置,请在本CoreSeek安装教程第三步所记录的mysql头文件地址和库文件地址,替换.

在make时,可能又会出现error级的错误,如果出现make程序是停止运行的,必须要修改,错误提示如下:

  1. phinxexpr.cpp:1047:11:error:useofundeclaredidentifier'ExprEval'
  2. Tval=ExprEval(this->m_pArg,tMatch);//'this'fixesgcc...

解决方法:修改源代码.

vim src/sphinxexpr.cpp

将T val = ExprEval(this->m_pArg,tMatch)替换为T val = this->ExprEval(this->m_pArg,tMatch).

就是加了个“this->”,是把这个文件中所有的ExprEval()函数都修改了,有三四个吧,修改后保存退出,重新sudo make,然后sudo make install即可.

七、测试XML数据

  1. $cdtestpack
  2. #测试编码是否正确显示中文,如果不是中文则请看本CoreSeek安装测试教程第一步
  3. $catvar/test/test.xml
  4. #测试mmseg分词的效果
  5. $/usr/local/opt/mmseg3/bin/mmseg-d/usr/local/opt/mmseg3/etcvar/test/test.xml
  6. #建立检索的索引。
  7. $/usr/local/opt/coreseek/bin/indexer-cetc/csft.conf--all
  8. #全文搜索“网络搜索”
  9. $/usr/local/opt/coreseek/bin/search-cetc/csft.conf网络搜索
  10. 如果在建立检索的索引出错,FATAL:failedtolockvar/data/xml.spl:Resourcetemporarilyunavailable,willnotindex.Try--rotateoption.
  11. 则修改为
  12. $/usr/local/opt/coreseek/bin/indexer-cetc/csft.conf--all--rotate

八、测试MYSQL数据源

cd testpack

1、修改配置文件,文件位于testpack/etc/csft_mysql.conf

vim etc/csft_mysql.conf

我的csft_mysql.conf文件如下:记得把mysql 的sql_host,sql_user,sql_pass,sql_db,sql_port修改为自己的,并且把路劲都修改为你自己的路径.

MySQL数据源配置,详情请查看:http://www.coreseek.cn/products-install/mysql/,请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库.

  1. #源定义
  2. sourcemysql
  3. {
  4. type =mysql
  5. sql_host =localhost
  6. sql_user =root
  7. sql_pass =8823150
  8. sql_db =test
  9. sql_port =3306
  10. sql_query_pre =SETNAMESutf8
  11. sql_query=SELECTid,group_id,UNIX_TIMESTAMP(date_added)ASdate_added,title,contentFROMdocuments
  12. #sql_query第一列id需为整数
  13. #title、content作为字符串/文本字段,被全文索引
  14. sql_attr_uint =group_id #从SQL读取到的值必须为整数
  15. sql_attr_timestamp =date_added#从SQL读取到的值必须为整数,作为时间属性
  16. sql_query_info_pre=SETNAMESutf8#命令行查询时,设置正确的字符集
  17. sql_query_info=SELECT*FROMdocumentsWHEREid=$id#命令行查询时,从数据库读取原始数据信息
  18. }
  19. #index定义
  20. indexmysql
  21. {
  22. source=mysql#对应的source名称
  23. path=/Users/lane/coreseek-3.2.14/testpack/var/data/mysql#请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
  24. docinfo=extern
  25. mlock=0
  26. morphology=none
  27. min_word_len=1
  28. html_strip=0
  29. #中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/
  30. charset_dictpath=/usr/local/opt/mmseg3/etc/#BSD、Linux环境下设置,/符号结尾
  31. #charset_dictpath=etc/#Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
  32. charset_type=zh_cn.utf-8
  33. }
  34. #全局index定义
  35. indexer
  36. {
  37. mem_limit=128M
  38. }
  39. #searchd服务定义
  40. searchd
  41. {
  42. listen=9312
  43. read_timeout=5
  44. max_children=30
  45. max_matches=1000
  46. seamless_rotate=0
  47. preopen_indexes=0
  48. unlink_old=1
  49. pid_file=/Users/lane/coreseek-3.2.14/testpack/var/log/searchd_mysql.pid#请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
  50. log=/Users/lane/coreseek-3.2.14/testpack/var/log/searchd_mysql.log#请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
  51. query_log=/Users/lane/coreseek-3.2.14/testpack/var/log/query_mysql.log#请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
  52. }

2、给mysql导入测试数据

mysql的测试数据我们用的是test数据库,documents数据表,请自行确保test数据库存在,我们一起来建documents表,这个表的结构和数据都是由CoreSeek提供的,在testpack/var/test/documents.sql.

  1. mysql-uroot-p
  2. #输入密码
  3. #看看,数据库test在不在
  4. mysql>showdatabases;
  5. #如果test库不在请创建
  6. mysql>createdatabasetest;
  7. usetest;
  8. #导入数据
  9. source/Users/lane/coreseek-3.2.14/testpack/var/test/documents.sql

3、测试:

  1. $cdtestpack
  2. #建立检索的索引
  3. $/usr/local/opt/coreseek/bin/indexer-cetc/csft_mysql.conf--all
  4. #全文搜索“网络搜索”
  5. $/usr/local/opt/coreseek/bin/search-cetc/csft_mysql.conf网络搜索

如果提示有错误,请检查csft_mysql.conf的路径、mysql的配置等信息是否正确.

九、测试PHP+MYSQL

1、先启动服务

/usr/local/opt/coreseek/bin/searchd -c etc/csft.conf

2、PHP文件

  1. <?php
  2. require("/Users/lane/coreseek-3.2.14/testpack/api/sphinxapi.php");
  3. //phpfensi.com
  4. $cl=newSphinxClient();
  5. $cl->SetServer('127.0.0.1',9312);
  6. $cl->SetConnectTimeout(3);
  7. $cl->SetArrayResult(true);
  8. $cl->SetMatchMode(SPH_MATCH_ANY);
  9. $res=$cl->Query('网络搜索',"*");
  10. print_r($cl);
  11. print_r($res);
  12. ?>

我在Linux折腾了一天没有搞定,在MAC搞了半天搞定了,等搞定Linux后再发Linux的.

相关广告
  • CoreSeek Mysql 安装与测试(中文分词与中文全文检索) CoreSeek Mysql 安装与测试(中文分词与中文全文检索) CoreSeek Mysql 安装与测试(中文分词与中文全文检索)
相关阅读

CoreSeek Mysql 安装与测试(中文分词与中文全文检索)

2019/10/10 17:46:18 | 谷歌SEO算法 | 搜索引擎