coreseek 安装及使用

一般站点都需要搜索功能,如果是php+mysql站点,建议选择coreseek,如果是java站点建议使用lucene,coreseek 是一款很好的中文全文检索/搜索软件,支持高速建立索引、有很强的扩展性、支持分布式检索,支持不同的搜索模式(’完全匹配’,’短语匹配’,’任一匹配’)。

logo1

如果下面的过程遇到问题,请参考 coreseek安装遇到的错误和问题解决方案 我把安装和配置遇到的常见问题和解决办法都总结在那里了。

一、coreseek 安装

1:安装mmseg分词库

wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-3.2.14-beta.tar.gz
tar -zxvf coreseek-3.2.14-beta.tar.gz
cd coreseek-3.2.14-beta
cd mmseg-3.2.14
./bootstrap    
./configure --prefix=/usr/local/mmseg3 #配置安装目录
make 
make install
cd ..

2:安装coreseek

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=/usr/local/mysql
make 
make install
cd..

3:测试mmseg分词和coreseek检索

cd /usr/local/src/coreseek-3.2.14
cd testpack
cat var/test/test.xml    #现实的是中文的内容
/usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml #显示xml文件内容
/usr/local/coreseek/bin/indexer -c etc/csft.conf --all #建立索引
/usr/local/coreseek/bin/search -c etc/csft.conf # 进行搜索

二、coreseek配置和使用

1:配置example.conf文件

cd /usr/local/coreseek/etc
cp sphinx-min.conf.dist example.conf

对example.conf的配置进行改造,变成我们所需的配置文件。

source example
{
    type                    = mysql
    sql_host                = localhost
    sql_user                = ***
    sql_pass                = ***
    sql_db                    = ***
    sql_port                = 3306
    sql_sock            = /tmp/mysql.sock    
    sql_query_pre            = SET NAMES utf8
    sql_query                = SELECT id,content FROM table_name #不管表的主键叫什么,查出来的结果都是为id
   sql_query_info_pre      = SET NAMES utf8                      #命令行查询时,设置正确的字符集
   sql_query_info          = SELECT * FROM table WHERE id=$id  LIMIT 100#命令行查询时,从数据库读取原始数据信息
}

#index定义
index example
{
    source            = example             #对应的source名称
   path            = /usr/local/coreseek/var/data/example/ #请修改为实际使用的绝对路径
   docinfo            = extern
    mlock            = 0
    morphology        = none
    min_word_len        = 1
    html_strip                = 0

#中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/
   charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾
   #charset_dictpath = etc/  #Windows环境下设置,/符号结尾,最好给出绝对路径,
   charset_type        = zh_cn.utf-8
}

#全局index定义
indexer
{
    mem_limit            = 128M
}

#searchd服务定义
searchd
{
    listen                  =   9312
    read_timeout        = 5
    max_children        = 60
    max_matches            = 1000
    seamless_rotate        = 0
    preopen_indexes        = 0
    unlink_old            = 1
    pid_file = /usr/local/coreseek/var/log/searchd_example.pid  #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
   log = /usr/local/coreseek/var/log/searchd_example.log  #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
   query_log = /usr/local/coreseek/var/log/query_example.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
}

2:开启searchd服务 (这点很重要)

coreseek刚安装后searchd服务是没开启的,需要先开启,不然创建索引的时候会出错。

先在 /usr/local/src/coreseek/var/log下创建一个searchd_example.pid文件,然后执行下面的代码:

/usr/local/coreseek/bin/searchd --config /usr/local/coreseek/etc/example.conf

3:创建索引

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

出现下面的提示:

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/example.conf'...
indexing index 'example'...
collected 1 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 1 docs, 631 bytes
total 0.005 sec, 118854 bytes/sec, 188.35 docs/sec
total 1 reads, 0.000 sec, 0.8 kb/call avg, 0.0 msec/call avg
total 5 writes, 0.000 sec, 0.5 kb/call avg, 0.0 msec/call avg
rotating indices: succesfully sent SIGHUP to searchd (pid=14094).
说明coreseek已经可以使用了。
可以把创建索引的命令写入crontab里面进行定时,实时更新索引。

4:php 和 coreseek 结合进行查询

先下载sphinxapi,然后文件引入结合php进行查询,下面更多参数的详解和配置,可以参考 coreseek api php手册

require_once('sphinxapi');
$s = new SphinxClient();
$s->SetServer('127.0.0.1','9312'); //设置searchd的主机名和TCP端口
$s->SetConnectTimeout(1); // 设置连接超时
$s->SetMatchMode(SPH_MATCH_BOOLEAN); //设置全文查询的匹配模式
$page_size=20;//自己定义的页数
$s->SetLimits($start,$page_size); //设置返回结果集偏移量和数目
$s->SetSortMode( SPH_SORT_EXTENDED,"good_count DESC, @id DESC" ); // 设置排序
$s->SetArrayResult(true);//控制搜索结果集的返回格式
$res = $s->Query($keyword,'*');// 执行搜索查询
$res_list = $res['matches'];

安装遇到的错误和问题解决方案

1、测试mmseg分词的时候

执行

/usr/local/coreseek/bin/indexer -c etc/csft.conf --all

提示下面的错误:

/usr/local/coreseek/bin/indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

原因:sphinx indexer的依赖库ibmysqlclient.so.18找不到。

解决办法:

vi /etc/ld.so.conf
加入 /usr/local/mysql/lib

然后运行 ldconfig

问题解决

2、执行索引的时候

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

提示下面的错误:

FATAL: failed to open /usr/local/coreseek/var/data/ttd_article/.tmp.spl: No such file or directory, will not index. Try --rotate option.

原因:source源找不到mysql.sock

解决办法:在配置文件csft_ttd_search.conf(自己创建的文件)的 source源 加入下面的代码

sql_sock   = /tmp/mysql.sock

3、执行索引的时候,出现的警告,导致索引没创建成功

WARNING: failed to open pid_file '/usr/local/coreseek/var/log/searchd_ttd_search.pid'.
WARNING: indices NOT rotated.

原因:找不到searchd_ttd_search.pid文件

解决办法:在’/usr/local/coreseek/var/log 下创建searchd_ttd_search.pid文件

再执行/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_ttd_search.conf –all –rotate
出现了另外一个警告:

WARNING: failed to scanf pid from pid_file '/usr/local/coreseek/var/log/searchd_ttd_search.pid'.
WARNING: indices NOT rotated.

原因:虽然创建了searchd_ttd_search.pid文件,但是里面没有写入进程id

解决办法(根本原因):在执行索引之前没有启动searchd服务,因此执行下面的命令

/usr/local/coreseek/bin/searchd --config /usr/local/coreseek/etc/ttd_search.conf

出现了期待已久的成功提示:

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/ttd_search.conf'...
listening on all interfaces, port=9312
rotating index 'mysql': success

 

coreseek 安装及使用方法详解的更多相关文章

  1. postman的安装和使用方法详解

    文章来源:http://www.cnplugins.com/tool/specify-postman-methods.html 非官网安装 这是一种直接通过打包已经安装的扩展程序的方式,来进行我认为的 ...

  2. Ubuntu下安装JDK图文教程详解 jdk-java6-30 .bin 的处理方法

    Ubuntu下安装JDK图文教程详解 jdk-java6-30 .bin 的处理方法: https://blog.csdn.net/mingjie1212/article/details/485250 ...

  3. SQL Server2012 安装方法详解

    SQL Server2012 安装方法详解 - MonkeyBrothers的博客 - CSDN博客 https://blog.csdn.net/monkeybrothers/article/deta ...

  4. C++调用JAVA方法详解

    C++调用JAVA方法详解          博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...

  5. CURL使用方法详解

    php采集神器CURL使用方法详解 作者:佚名  更新时间:2016-10-21   对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程 ...

  6. PHP cURL应用实现模拟登录与采集使用方法详解

    对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情景,file_get_co ...

  7. Python安装、配置图文详解(转载)

    Python安装.配置图文详解 目录: 一. Python简介 二. 安装python 1. 在windows下安装 2. 在Linux下安装 三. 在windows下配置python集成开发环境(I ...

  8. Windows-008-VirtualBox 安装 Win7 前沿配置详解

    此文主要讲述在 Windows 系统下安装虚拟机 VirtualBox,及用 VirtualBox 安装 Win7 Professional 64bit 操作系统的前沿配置为例,配以图文进行详细的讲解 ...

  9. webpack安装配置使用教程详解

    webpack安装配置使用教程详解 www.111cn.net 更新:2015-09-01 编辑:swteen 来源:转载 本文章来为各位详细的介绍一下关于webpack安装配置使用教程吧,这篇文章对 ...

随机推荐

  1. iOS系统分析(二)Mach-O二进制文件解析

    ➠更多技术干货请戳:听云博客 0x01  Mach-O格式简单介绍 Mach-O文件格式是 OS X 与 iOS 系统上的可执行文件格式,类似于windows的 PE 文件 与 Linux(其他 Un ...

  2. iOS NSNotificationCenter详解

    通知中心的特点: 1:同步执行 2: 一对多发送消息 3: 降低程序耦合度 通知中心是单例,目的就是从任意一个发送消息到任意一个接收者,是同步执行的. 那么什么是同步呢? 用网上经典的说法,就是我叫朋 ...

  3. 什么是RAID?RAID有什么用?RAID原理

    什么是RAID 硬盘是个很脆弱的东西,它经常会坏掉.所以,为了保证服务器可靠耐用,硬盘必须时时刻刻保持可用.所以有了RAID这个东西.它的目的是将好几个硬盘合并在一起,就算硬盘坏了一个,剩下还有好几个 ...

  4. 豆芽儿 - 高端IT人才成长社区 上线啦!

      豆芽儿 - 高端IT人才成长社区 这是我们新打造的网站,全新设计了用户体验,给你更爽快的学习体验.为你分享敏捷开发.项目管理.需求分析.软件设计.UML.中层领导力.CMMI.IT职场等“高大上” ...

  5. 什么是JS事件冒泡?

    什么是JS事件冒泡?: 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理 程序或者事件返回true,那么 ...

  6. archlinux 加载loop模块,且设定loop设备个数

    如果loop模块没有编译进内核就要先加载loop模块 modprobe loop 然后更改/etc/modprobe.d/modprobe.conf(有些文章写是在/etc/modprobe.conf ...

  7. 理解 neutron(15):Neutron linux-bridge-agent 创建 linux bridge 的简要过程

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  8. JSON字符串和JS对象之间的转换

    JSON字符串和JS对象之间的转换 1 json字符串转换为js对象 1.1 标准json格式字符串转换为Js对象  JSON字符串 str JSON.parse(str) eval(str) eva ...

  9. 关于对For循环嵌套优化的问题

    1.案例描述 由于一次Java面试的笔试题,当时没有写出很好的解决方案,特此专门撰写一篇博客来加以记录,方便日后的查看 面试题目如下:从性能上优化如下代码并说明优化理由? for (int i = 0 ...

  10. C#终于支持可选参数了!

    今天偶然看了一下C#4.0的新特性, 第一个新特性就令我兴奋不已, 曾经一度令我使用C#很不习惯的"死参数"问题终于搞定了.实在太爽了! 过去用C++, VB.NET的时候都很爽, ...