ubuntu-10.04的测试环境 安装测试 Coreseek开源中文检索引擎-Sphinx中文版

时间:2023-03-08 20:43:19
一、

32位版本:

coreseek安装需要预装的软件:
apt-get install make gcc g++ automake libtool mysql-client libmysqlclient15-dev libxml2-dev libexpat1-dev
二、
CoreSeek快速安装:
安装前,建议查看:源码包说明README;4.0/4.1版可参考3.2版本安装,步骤相同;如遇到问题,请看详细安装说明。
##下载coreseek:coreseek 3.2.14:点击下载、coreseek 4.0.1:点击下载、coreseek 4.1:点击下载
$ wget http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
$ 或者 http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.0.1-beta.tar.gz
$ 或者 http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz
$ tar xzvf coreseek-3.2.14.tar.gz 或者 coreseek-4.0.1-beta.tar.gz 或者 coreseek-4.1-beta.tar.gz
$ cd coreseek-3.2.14 或者 coreseek-4.0.1-beta 或者 coreseek-4.1-beta
##前提:需提前安装操作系统基础开发库及mysql依赖库以支持mysql数据源和xml数据源
##安装mmseg
$ cd mmseg-3.2.14
$ ./bootstrap #输出的warning信息可以忽略,如果出现error则需要解决
$ ./configure --prefix=/usr/local/mmseg3
$ make && make install
$ cd ..
##安装coreseek
$ cd csft-3.2.14 或者 cd csft-4.0.1 或者 cd csft-4.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 ##如果提示mysql问题,可以查看MySQL数据源安装说明
上一步安装的过程 可能出现的错误:
configuring Sphinx
------------------
checking for CFLAGS needed for pthreads... -pthread
checking for LIBS needed for pthreads... -lpthread
checking for pthreads... found
checking whether to compile with MySQL support... yes
checking for mysql_config... not found
checking MySQL include files... configure: error: missing include files.
******************************************************************************
ERROR: cannot find MySQL include files.
Check that you do have MySQL include files installed.
The package name is typically 'mysql-devel'.
If include files are installed on your system, but you are still getting
this message, you should do one of the following:
1) either specify includes location explicitly, using --with-mysql-includes;
2) or specify MySQL installation root location explicitly, using --with-mysql;
3) or make sure that the path to 'mysql_config' program is listed in
   your PATH environment variable.
To disable MySQL support, use --without-mysql option.
******************************************************************************
解决方案执行:
apt-get update
apt-get install libmysqlclient15-dev
$ make && make install
$ cd ..
##测试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 网络搜索
安装测试完成。
查看版本信息
$ /usr/local/coreseek/bin/indexer -c etc/csft.conf --all
##如要停止搜索服务,请使用
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft_mysql.conf --stop
如果出现下面的错误:
Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)]
Copyright (c) 2007-2011,
Beijing Choice Software Technologies Inc (http://www.coreseek.com)
using config file '/usr/local/coreseek/etc/mysql_csft.conf'...
FATAL: failed to parse config file '/usr/local/coreseek/etc/mysql_csft.conf'
解决办法:
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft_mysql.conf --pidfile
启动服务:
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft_mysql.conf --console
##如要已启动服务,要更新索引,请使用
/usr/local/coreseek/bin/indexer -c etc/csft.conf --all --rotate
生成索引
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf  --all
Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)]
Copyright (c) 2007-2011,
Beijing Choice Software Technologies Inc (http://www.coreseek.com)
 using config file '/usr/local/coreseek/etc/csft_mysql.conf'...
indexing index 'mysql'...
collected 3 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 3 docs, 7545 bytes
total 0.018 sec, 416069 bytes/sec, 165.43 docs/sec
total 2 reads, 0.000 sec, 4.2 kb/call avg, 0.0 msec/call avg
total 7 writes, 0.000 sec, 3.1 kb/call avg, 0.0 msec/call avg
搜索
/usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/csft_mysql.conf 百度收购
结合php使用:
require ( "sphinxapi.php" );
$sph = new SphinxClient ();
$sph -> SetServer ('10.2.6.101', 9312 );
$sph -> setMatchMode(SPH_MATCH_ANY);
//$sph -> SetArrayResult ( true );
$sph -> SetLimits(0, 15, 1000);
$sph -> SetMaxQueryTime(10);
$index = 'index_main1';
$dbname = 'test';
$table = 'documents';
$result = $sph->Query ($wd, $index);
if($result == false)
{
 echo '<pre>';
 var_dump ($sph->GetLastError());exit();
}
if(isset($result['total_found']) && $result['total_found']>0)
{
 $matches = $result['matches'];
 $keys = array_keys($matches);
 include 'MiniMysql.php';
 $db = new MiniMysql(array('host'=>'localhost','user'=>'root','pwd'=>'root','dbname'=>$dbname,'prefix'=>'mj_'));
 $list = $db -> getArray('SELECT id,title,content FROM `'.$table.'` WHERE id IN ('.implode(',',$keys).')');
 $html = array();
 $keys = array_flip($keys);
 $opts = array(
  'before_match' => '<font style=\'font-weight:bold;color:red\'>',
  'after_match' => '</font>',
  'limit' => 150,
 );
 foreach ($list as $key => $val )
 {
  $tmp = $sph->buildExcerpts($val,'index_main1',$wd,$opts);
  $html[$keys[$val['id']]] =
   '<div>'.
    '<a href="" title="" target="">'.$tmp['1'].'</a>'.
    '<p class="brief">'.$tmp['2'].'</p>'.
   '</div>';
  //$html[] = $html[$keys[$val['id']]] = '<div><a href="" title="" target="">'.$val['title'].'</a></div>';
 }
 ksort($html);
 echo implode('',$html);
}
else
{
 echo '';
 exit();
}