Linux下coreseek环境安装 、mysql数据源、sphinx扩展安装及php调用

时间:2022-01-12 07:01:40

一、安装m4-1.4.13、autoconf-2.64、automake-1.11、libtool-2.2.6

  下载安装m4-1.4.13、autoconf-2.64、automake-1.11、libtool-2.2.6,coreseek安装搭好安装环境。

 1     m4-1.4.13下载地址: http://mirrors.kernel.org/gnu/m4/m4-1.4.13.tar.gz  
 2     $ tar -xzvf m4-1.4.13.tar.gz  
 3     $ cd m4-1.4.13  
 4     $ ./configure --prefix=/usr/local  
 5     $ make && make install  
 6     $ cd ..  
 7       
 8     autoconf-2.64下载地址: http://mirrors.kernel.org/gnu/autoconf/autoconf-2.64.tar.gz  
 9     $ tar -xzvf autoconf-2.64.tar.gz  
10     $ cd autoconf-2.64  
11     $ ./configure --prefix=/usr/local  
12     $ make && make install  
13     $ cd ..  
14       
15     automake-1.11下载地址: http://mirrors.kernel.org/gnu/automake/automake-1.11.tar.gz  
16     $ tar xzvf automake-1.11.tar.gz  
17     $ cd automake-1.11  
18     $ ./configure --prefix=/usr/local  
19     $ make && make install  
20     $ cd ..  
21       
22     libtool-2.2.6下载地址: http://mirrors.kernel.org/gnu/libtool/libtool-2.2.6b.tar.gz  
23     $ tar xzvf libtool-2.2.6b.tar.gz  
24     $ cd libtool-2.2.6b  
25     $ ./configure --prefix=/usr/local  
26     $ make && make install  
27     $ cd ..  

 

二、安装mmseg(coreseek所使用的词典)

1   tar xzvf coreseek-3.2.14.tar.gz
2   cd mmseg-3.2.14
3   ./bootstrap    #输出的warning信息可以忽略,如果出现error则需要解决
4   ./configure --prefix=/usr/local/mmseg3
5   make && make install

 

三、安装coreseek(sphinx)

1   cd csft-3.2.14
2   sh buildconf.sh    #输出的warning信息可以忽略,如果出现error则需要解决
3   ./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=/usr/
4   (如果出现mysql问题,须检查是否安装mysql,--with-mysql=mysql的安装位置)
5   make && make install

 

四、测试mmesg分词,coreseek搜索(需要预先设置好字符集为zh_CN.UTF-8,确保正确显示中文) 

1   $ cd testpack  
2   $ cat var/test/test.xml    #此时应该正确显示中文  
3   $ /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml  
4   $ /usr/local/coreseek/bin/indexer -c etc/csft.conf --all  
5   $ /usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索  

如果出现 xmlpipe2 support NOT compiled in. To use xmlpipe2, install missing XML libra 的错误

执行命令:

1   apt-get install expat-devel

重现编译coreseek,步骤三,注意make clean.

测试结果如下:

1   $ cd testpack  
2   $ cat var/test/test.xml    #此时应该正确显示中文  
3   $ /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml  
4   $ /usr/local/coreseek/bin/indexer -c etc/csft.conf --all  
5   $ /usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索
6   返回结果:
7   words:
8   1. '网络': 1 documents, 1 hits
9   2. '搜索': 2 documents, 5 hits

 

五、建立mysql数据源的配置文件

编写配置文件my.conf:

 1 #源定义
 2 source files
 3 {
 4         type            = mysql
 5         sql_host        = localhost
 6         sql_user        = root
 7         sql_pass        = f103
 8         sql_db          = test
 9         sql_port        = 3306  #default is 3306
10         sql_query_pre   = SET NAMES utf8
11         sql_query       = SELECT id,filepath,filename,filesize,filemtime,filelabel As label from files
12         sql_query_info_pre      = SET NAMES utf8
13     sql_query_info            = SELECT * FROM files WHERE id=$id  #命令行查>询时,从数据库读取原始数据信息
14 }
15 
16 #索引
17 index files
18 {
19         source          = files
20         path            = /usr/local/coreseek/var/data/files
21         docinfo         = extern
22         charset_dictpath = /usr/local/mmseg3/etc/
23         charset_type    = zh_cn.utf-8
24         mlock           = 0
25         morphology      = none
26         min_word_len    = 1
27         html_strip      = 0
28 }
29 
30 #索引器
31 indexer
32 {
33         mem_limit       = 128M
34 }
35 
36 #守护进程
37 searchd
38 {
39         port            = 9312
40         log             = /usr/local/coreseek/var/log/searchd_files.log
41         query_log       = /usr/local/coreseek/var/log/query_files.log
42         read_timeout    = 5
43         max_children    = 30
44         pid_file        = /usr/local/coreseek/var/log/searchd_files.pid
45         max_matches     = 1000
46         seamless_rotate = 1
47         preopen_indexes = 0
48         unlink_old      = 1
49 }

六、建立test数据库,其中包含表files

id:id值,主键,自增

filepath:文件路径

filename:文件名

filesize:文件大小

filemtime:文件最后修改日期

filelabel:文件标签、描述

 1 CREATE TABLE files (
 2     id int primary key not null auto_increment,
 3     filepath varchar(255) not null,
 4     filename varchar(255) not null,
 5     filesize varchar(255) not null,
 6     filemtime varchar(255) not null,
 7     filelabel text
 8 );
 9 
10 INSERT INTO files (id,filepath, filename, filesize,filemtime,filelabel) VALUES (1,'/mnt/fuse/text1.txt', 'text1.txt', '1M', '2014-07-23 10:00:00', '测试文件');
11 
12 INSERT INTO files (id,filepath, filename, filesize,filemtime,filelabel) VALUES (2,'/mnt/fuse/test2.txt', 'text2.txt', '241M', '2014-07-23 11:09:11', '据国外媒体报道,谷歌将巨资收购百度,涉及金额高达300亿美元。谷歌借此重返大陆市场。
13   该报道称,目前谷歌与百度已经达成了收购协议,将择机对外公布。百度的管理层将100%保留,但会将项目缩减,包括有啊商城,以及目前实施不力的凤巢计划。正在进行测试阶段的视频网站qiyi.com将输入更多的Youtube资源。
14 (YouTube在大陆区因内容审查暂不能访问)。
15   该消息似乎得到了谷歌CEO施密特的确认,在其twitter上用简短而暧昧的文字进行了表述:“ Withdraw from that market? u\'ll also see another result, just wait... ” 意思是:从那个市场退出?你还会看到另外一个结果。
16 毫无疑问,那个市场指的就是*。而另外的结果,对应此媒体报道,就是收购百度,从而曲线返回大陆搜索市场。
17   在最近刚刚结束的深圳IT领袖峰会上,李彦宏曾言,“谷歌没有退出中国,因为还在香港”。也似乎在验证被收购的这一事实。
18   截止发稿,百度的股价为597美元,市值为207亿美元。谷歌以高达300亿美元的价格,实际溢价高达50%。而谷歌市值高达1796亿美元,而且手握大量现金,作这样的决策也在情理之中。
19     近日,很多媒体都在报道百度创始人、CEO李彦宏的两次拒购:一次是百度上市前夕,李彦宏拒绝谷歌的并购,这个细节在2月28日央视虎年首期对话节目中得到首次披露﹔一次是在百度国际化战略中,拒绝采用海外并购的方式,>而是采取了从日本市场开始的海外自主发展之路。这也让笔者由此开始思考民族品牌的发展之路。
20   收购是打压中国品牌的惯用伎俩
21   2010年2月28日,央视经济频道《对话》节目昨晚推出虎年首期节目,百度董事长兼CEO李彦宏作为嘉宾做客节目。李彦宏首度谈及2005年百度上市前夕,谷歌CEO施密特曾秘密造访百度时秘密谈话的内容,主要是劝阻百度上市,李
22 彦宏断然拒绝了施密特的“好意”。今天看来,施密特当日也许已有不祥的预感,这个几百人的小公司终有一日会成为他们的大麻烦。
23   本期《对话》一经播出,便引发了业界讨论。
24   外资品牌通过收购打压中国品牌的案例不胜枚举。从以往跨国企业并购的中国品牌来看,真正让其活下来的品牌并不多,要么被雪藏,要么被低端化。
25   因此,2005年百度没有接受Google的收购邀请,坚持自主发展,这对于保护中国品牌,维护中国网民信息安全有着至关重要的作用。当前百度市场份额高达76%,并持续增长,这也充分验证了李彦宏拒绝收购决策的正确性。
26   今天看来,“百度一下”已经成为3亿多中国网民的网络生存法则,而直到今天环视全球,真正能像中国一样,拥有自己独立搜索引擎的只有4个国家!我们也许应该庆幸当时李彦宏的选择。这个故事也告诉我们,中国企业做品牌还>要靠自己!
27   收购也可能是中国企业走出去的陷阱
28   同样在2月28日,亚布力第十届年会上,李彦宏在论坛上指出:“我们和很多其它公司的国际化路子是很不一样的,我们不是去买一个国外的公司,”,李彦宏解释了百度率先选择日本作为走出去的对象的原因,因为日本和中国一衣
29 带水的近邻优势,日本的市场规模,在日本也没有一家独大的搜索引擎。
30   中国企业收购这些外资品牌目的是“借船出海”。外资品牌进入中国是收购中国优质品牌,而中国企业进入国外市场的收购策略恰恰相反,这也是中国企业借船出海屡屡失败的原因所在。
31   笔者认为,中国互联网公司走出去要依靠自身发展,并不能单纯依靠收购。李彦宏在百度成立伊始就抱定了国际化决心,使百度真正在面对国际化机遇时,更加冷静和具有前瞻力。李彦宏也承认当前百度在日本还处于初级发展阶>段,但他也预言“2012年,百度与Google划洋而治”,对此我们拭目以待!');
32 
33 INSERT INTO files (id,filepath, filename, filesize,filemtime,filelabel) VALUES (3,'/mnt/fuse/text3.txt', 'text3.txt', '31M', '2014-07-23 10:20:20', '测试,音乐,刘泉,查不到这条记录吗!!!');

 

七、执行索引(查询、测试前必须执行一次)

1     /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/my.conf --all --rotate  

 

八、启动searchd服务

1   # /usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/my.conf  

如果第一次出现pid文件不存在的情况,可以使用:

1   # /usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/my.conf  --pidfile

 

九、查询关键字

 1 # /usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/my.conf  测试
 2 Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)]
 3 Copyright (c) 2007-2011,
 4 Beijing Choice Software Technologies Inc (http://www.coreseek.com)
 5 
 6  using config file '/usr/local/coreseek/etc/my.conf'...
 7 index 'files': query '测试 ': returned 3 matches of 3 total in 0.003 sec
 8 
 9 displaying matches:
10 1. document=1, weight=1
11     id=1
12     filepath=/mnt/fuse/anime.mp4
13     filename=anime.mp4
14     filesize=287M
15     filemtime=2014-07-23 11:09:11
16     filelabel=测试数据,到底有没有!!!
17 2. document=2, weight=1
18     id=2
19     filepath=/mnt/fuse/test1.txt
20     filename=test1.txt
21     filesize=7M
22     filemtime=2014-07-23 11:28:11
23     filelabel=据国外媒体报道,谷歌将巨资收购百度,涉及金额高达300亿美元。谷歌借此重返大陆市场。
24   该报道称,目前谷歌与百度已经达成了收购协议,将择机对外公布。百度的管理层将100%保留,但会将项目缩减,包括有啊商城,以及目前实施不力的凤巢计划。正在进行测试阶段的视频网站qiyi.com将输入更多的Youtube资源。
25 (YouTube在大陆区因内容审查暂不能访问)。
26   该消息似乎得到了谷歌CEO施密特的确认,在其twitter上用简短而暧昧的文字进行了表述:“ Withdraw from that market? u'll also see another result, just wait... ” 意思是:从那个市场退出?你还会看到另外一个结果。
27 毫无疑问,那个市场指的就是*。而另外的结果,对应此媒体报道,就是收购百度,从而曲线返回大陆搜索市场。
28   在最近刚刚结束的深圳IT领袖峰会上,李彦宏曾言,“谷歌没有退出中国,因为还在香港”。也似乎在验证被收购的这一事实。
29   截止发稿,百度的股价为597美元,市值为207亿美元。谷歌以高达300亿美元的价格,实际溢价高达50%。而谷歌市值高达1796亿美元,而且手握大量现金,作这样的决策也在情理之中。
30     近日,很多媒体都在报道百度创始人、CEO李彦宏的两次拒购:一次是百度上市前夕,李彦宏拒绝谷歌的并购,这个细节在2月28日央视虎年首期对话节目中得到首次披露﹔一次是在百度国际化战略中,拒绝采用海外并购的方式,>而是采取了从日本市场开始的海外自主发展之路。这也让笔者由此开始思考民族品牌的发展之路。
31   收购是打压中国品牌的惯用伎俩
32   2010年2月28日,央视经济频道《对话》节目昨晚推出虎年首期节目,百度董事长兼CEO李彦宏作为嘉宾做客节目。李彦宏首度谈及2005年百度上市前夕,谷歌CEO施密特曾秘密造访百度时秘密谈话的内容,主要是劝阻百度上市,李
33 彦宏断然拒绝了施密特的“好意”。今天看来,施密特当日也许已有不祥的预感,这个几百人的小公司终有一日会成为他们的大麻烦。
34   本期《对话》一经播出,便引发了业界讨论。
35   外资品牌通过收购打压中国品牌的案例不胜枚举。从以往跨国企业并购的中国品牌来看,真正让其活下来的品牌并不多,要么被雪藏,要么被低端化。
36   因此,2005年百度没有接受Google的收购邀请,坚持自主发展,这对于保护中国品牌,维护中国网民信息安全有着至关重要的作用。当前百度市场份额高达76%,并持续增长,这也充分验证了李彦宏拒绝收购决策的正确性。
37   今天看来,“百度一下”已经成为3亿多中国网民的网络生存法则,而直到今天环视全球,真正能像中国一样,拥有自己独立搜索引擎的只有4个国家!我们也许应该庆幸当时李彦宏的选择。这个故事也告诉我们,中国企业做品牌还>要靠自己!
38   收购也可能是中国企业走出去的陷阱
39   同样在2月28日,亚布力第十届年会上,李彦宏在论坛上指出:“我们和很多其它公司的国际化路子是很不一样的,我们不是去买一个国外的公司,”,李彦宏解释了百度率先选择日本作为走出去的对象的原因,因为日本和中国一衣
40 带水的近邻优势,日本的市场规模,在日本也没有一家独大的搜索引擎。
41   中国企业收购这些外资品牌目的是“借船出海”。外资品牌进入中国是收购中国优质品牌,而中国企业进入国外市场的收购策略恰恰相反,这也是中国企业借船出海屡屡失败的原因所在。
42   笔者认为,中国互联网公司走出去要依靠自身发展,并不能单纯依靠收购。李彦宏在百度成立伊始就抱定了国际化决心,使百度真正在面对国际化机遇时,更加冷静和具有前瞻力。李彦宏也承认当前百度在日本还处于初级发展阶>段,但他也预言“2012年,百度与Google划洋而治”,对此我们拭目以待!
43 3. document=3, weight=1
44     id=3
45     filepath=/mnt/fuse/test2.txt
46     filename=test2.txt
47     filesize=17M
48     filemtime=2014-07-01 11:28:11
49     filelabel=音乐文件,刘泉,测试用用,查不出来吗
50 
51 words:
52 1. '测试': 3 documents, 3 hits
53 
54 # /usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/my.conf  音乐
55 Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)]
56 Copyright (c) 2007-2011,
57 Beijing Choice Software Technologies Inc (http://www.coreseek.com)
58 
59  using config file '/usr/local/coreseek/etc/my.conf'...
60 index 'files': query '音乐 ': returned 1 matches of 1 total in 0.003 sec
61 
62 displaying matches:
63 1. document=3, weight=1
64     id=3
65     filepath=/mnt/fuse/test2.txt
66     filename=test2.txt
67     filesize=17M
68     filemtime=2014-07-01 11:28:11
69     filelabel=音乐文件,刘泉,测试用用,查不出来吗
70 
71 words:
72 1. '音乐': 1 documents, 1 hits

 

九、安装sphinx扩展

1、安装libsphinxclient

1     # cd /home/liuquan/Desktop/coreseek/coreseek-3.2.14/csft-3.2.14/api/libsphinxclient  
2     # ./configure  --prefix=/usr/local/sphinxclient        
3     # make && make install

2、安装sphinx的PHP扩展

 1   下载地址:http://pecl.php.net/package/sphinx  
 2   # tar zxvf sphinx-1.3.0.tgz  
 3   # cd sphinx-1.3.0  
 4   # phpize  (如果没有phpize,需要apt-get install php5-dev)
 5   # ./configure --with-php-config=/usr/bin/php-config --with-sphinx=/usr/local/sphinxclient  
 6   # make && make install  

3、修改配置

1     # cd /etc/php5/conf.d
2     # vim sphinx.ini
3     #
4     # 修改sphinx.ini,添加extension=sphinx.so 
5     # service apache2 restart  

查看phpinfo,sphinx扩展是否成功

Linux下coreseek环境安装 、mysql数据源、sphinx扩展安装及php调用

Linux下coreseek环境安装 、mysql数据源、sphinx扩展安装及php调用

 

十、php代码测试

 

 1 <?php  
 2     $s = new SphinxClient;  
 3     $s->setServer("127.0.0.1", 9312);  
 4   
 5     $s->setMatchMode(SPH_MATCH_PHRASE);  
 6     $s->setMaxQueryTime(30);  
 7     $res = $s->query("测试",'files'); #[测试]关键字,[files]数据源source  
 8     
 9     var_dump($res);
10     echo "<br>";
11     
12     $value = array_keys($res['matches']);
13     var_dump($value);  
14     echo "<br>";
15 ?>