Linux服务器安装coreseek
博客专区 > webphp 的博客 > 博客详情
Linux服务器安装coreseek
webphp 发表于5个月前
Linux服务器安装coreseek
  • 发表于 5个月前
  • 阅读 7
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

一、Coreseek中文全文检索引擎
    Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索、论 坛/站内搜索、数据库搜索、文档/文献检索、信息检索、数据挖掘等应用场景,用户可以免费下载使用
二、Coreseek简介
    Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索、论 坛/站内搜索、数据库搜索、文档/文献检索、信息检索、数据挖掘等应用场景。商业使用(例如, 嵌入到其他程序中)需要获得商业授权。
Coreseek是一个支持中文的全文搜索引擎,意图为其他应用提供高速、低空间占用、高相关度结果的中文全文搜索能力。CoreSeek可以非常容易的与SQL数据库和脚本语言集成。
在Sphinx发行版本中提供的原生搜索API支持PHP、Python、Perl、Rudy和Java。搜索API非常轻量化,可以在几个小时之内移植 到新的语言上。第三方API接口和插件提供了对Perl、C#、Haskell、Ruby-on-Rails支持,以及对其他可能的语言或者框架的支持。版本有:Coreseek3.2稳定版、Coreseek4.1测试版、Coreseek5最新版
三、安装Coreseek
    1、下载coreseek3.2稳定版,地址为: http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
    最近发面coreseek的官网访问不了了,贴上下载地址 http://pan.baidu.com/s/1dEJazcd  密码:4t2w
    2、进入你的存放安装包的目录,然后wget   http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
    3、tar -xzvf coreseek-3.2.14.tar.gz
    4、cd coreseek-3.2.14
    5、安装coreseek之前需要先安装需要预装的软件(注:我的linux系统为centos 64位)
             yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel
    6、安装mmseg
         cd mmseg-3.2.14
         ./bootstrap  #输出的warning信息可以忽略,如果出现error则要解决
         ./configure --prefix=/use/local/mmseg3
         make && make install
         cd ..
         #安装完成后,mmseg使用的词典和配置文件,将自动安装 到/usr/local/mmseg3/etc目录中
         #中文分词测试,如果显示不正常,请检查当前环境下的locale和utf-8中文字符显示设置
         #测试mmseg安装是否成功
          /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc/ /mnt/coreseek-3.2.14/mmseg-3.2.14/src/t1.txt
         这里注意t1.txt的文件的路径,因为我把coreseek的安装包下载并解压在了/mnt目录下,所以这里根据自己的实际路径来
         有图
      7、安装Coreseek
              cd /mnt/coreseek-3.2.14/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
               如查提示找不到mysql includes file则使用下面的编译命令
               ./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-includes=/alidata/server/mysql/include/ --with-mysql-libs=/alidata/server/mysql/bin/
              make && make install
     8、测试Coreseek
         cd ../testpack
         /usr/local/coreseek/bin/indexer -c etc/csft.conf
         #以下为正常情况显示的信息
         有图
四、配置Coreseek支持Mysql数据库
    1、配置csft_mysql.conf文件
         复制mysql配置文件到coreseek安装目录下etc/下,(比如/usr/local/coreseek/etc/)
          cp /usr/local/src/coreseek-3.2.14/testpack/etc/csft_mysql.conf /usr/local/coreseek/etc/
        cd /usr/local/coreseek/etc/
        vim csft_mysql.conf
         官方参考文档: mysql数据源 http://www.coreseek.cn/products-install/datasource/,
          不过在终结这篇日志的时候,发现coreseek的官网打不开了
         下面的示例是本人的配置,因为项目在后期中使用的是coreseek,所有在项目中有很多表,不是把所有的文档都存放在基础表中的,所有就引用以下这样的配置,因为是多张表,把每张表都形成一个table_id,然后将取出的数据根据table_id的值对应不同的表,获取mysql的数据
#源定义(项目数据源)
source project
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass =111111
sql_db = newturen
sql_port =3306
sql_query_pre = SET NAMES utf8
sql_query = SELECT id,1 as table_id,title,en_title keyword,content FROM tu_project
#sql_query第一列id需为整数
#title、content作为字符串/文本字段,被全文索引
sql_attr_uint = table_id #从SQL读取到的值必须为整数
#sql_attr_timestamp = date_added #从SQL读取到的值必须为整数,作为时间属性
sql_query_info_pre = SET NAMES utf8 #命令行查询时,设置正确的字符集
#sql_query_info = SELECT * FROM tu_books WHERE id=$id #命令行查询时,从数据库读取原始数据信息
}
#新闻数据源
source news : project{
sql_query = SELECT id,2 as table_id,title,brief,keyword,content FROM tu_news
}
#学术交流数据源
source academic : project{
sql_query = SELECT id,3 as table_id,title,keyword FROM tu_academic
}
#视频数据源
source video : project{
sql_query = SELECT id,4 as table_id,title,brief,content FROM tu_video
}
#出版物数据源
source paper : project{
sql_query = SELECT id,5 as table_id,subject,abstract,keyword,content FROM tu_paper
}
#index定义(项目索引)
index project
{
source = project #对应的source名称
path =/mnt/coreseek/data/project #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
docinfo =extern
mlock =0
morphology = none
min_word_len =1
html_strip =1
#中文分词配置,详情请查看:http://www.coreseek.cn/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 news : project{
source = news
path =/mnt/coreseek/data/news
}
#(学术交流索引)
index academic : project{
source = academic
path =/mnt/coreseek/data/academic
}
#(视频索引)
index video : project{
source = video
path =/mnt/coreseek/data/video
}
#全局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 =/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 #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
}
         2、创建索引
              注:路径要根据自己在服务器的实际路径为主
               可能出现的错误
               ERROR: index 'phperz': sql_connect: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) (DSN=mysql://root:***@localhost :3306/phperz).
               这是因为mysql的sock文件路经不正确导致的.
               确认一下你的mysql.sock路经,建立一个软连接,比如
               ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
五、Coreseek+php使用方式
     复制安装止录下的mnt/coreseek-3.2.14/testpack/api/sphinxapi.php文件到你的项目里
    你的程序里include sphinxapi.php
    php使用方法见/usr/local/src/coreseek-3.2.14/testpack/api/test.php
    另附我的使用方法,我的项目用CI框架开发,所以sphinxapi.php的文件名必须要和类名相同,并且首字母大写,我放到了library目录,我把以下示例放在一个modle中,可以多处传值使用
/**
* 通过接口请求返回数据
* @param string $search_name 搜索名称
* @param string $search_type 搜索类型
* @param int $stat_page 开始页数
* @param int $page_size 每页记录数
* @author Baip
*/
publicfunction sphinxApi($search_name, $search_type, $stat_page, $page_size){
//加载并实列化sphinx接口,在libtaries文件夹中有两个接口文件,sphinxclient为win环境的sphinxclient_linux为linux系统,上线请注意修改名称
$this->load->library('sphinxclient');
$sphinx =newSphinxClient();
//sphinx的主机名和端口
$sphinx->SetServer(config_item('sphinx_host'), config_item('sphinx_port'));
//设置匹配方式
$sphinx->SetMatchMode(SPH_MATCH_ANY);
//查询结果根据相似度排序
$sphinx->SetSortMode(SPH_SORT_RELEVANCE);
//设置返回结果集为php数组格式
$sphinx->SetArrayResult(true);
//匹配结果的偏移量,参数的意义依次为:起始位置,返回结果条数,最大匹配条数
$sphinx->SetLimits($stat_page, $page_size,1000);
//最大搜索时间
$sphinx->SetMaxQueryTime(10);
//执行简单的搜索,这个搜索将会查询所有字段的信息,要查询指定的字段请继续看下文
// $index = 'books,paper'; //索引源是配置文件中的 books 类,如果有多个索引源可使用,号隔开:'books,paper' 或者使用'*'号代表全部索引源
$result = $sphinx->query ($search_name, $search_type);
return $result;
}
    根据coreseek返回的table_id及各表的id值,然后重组数组获取mysql数据,进行前台模板渲染就不在这里描述
六、coreseek的启动、创建索引等操作
     启动
    /usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft_mysql.conf
    停止
    /usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft_mysql.conf --stop
    建立索引
    /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf --all
    重建索引
    /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf --all --rotate
共有 人打赏支持
粉丝 2
博文 89
码字总数 90487
×
webphp
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: