安装前首先安装依赖的软件包

yuminstall make gcc g++ gcc-c++ libtool autoconf automake imake  libxml2-devel expat-devel

在Linux、BSD上安装Sphinx/Coreseek

$ wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz

将你下载的tar包解压,并进入coreseek 子目录:

$ tar xzvf coreseek-3.2.14.tar.gz

$ cd coreseek

1、首先安装MMSeg:

$ cd mmseg

$ ./bootstrap

$ ./configure --prefix=/usr/local/mmseg

$ make

$ make install

遇到的问题:

error: cannot find input file: src/Makefile.in

或者遇到其他类似error错误时...

解决方案:

依次执行下面的命令,我运行'aclocal'时又出现了错误,解决方案请看下文描述

$ yum -y install libtool

$ aclocal

$ libtoolize --force

$ automake --add-missing

$ autoconf

$ autoheader

$ make clean

$ ./configure --prefix=/usr/local/mmseg

$ make

$ make install

$ cd ../

2、运行配置 程序:

$ cd csft-4.1

$ yum install mysql-devel libxml2-devel expat expat-devel   支持MySQL数据源

$ /sh buildconf.sh

$ ./configure --prefix=/usr/local/coreseek  --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/ --with-mysql-includes=/alidata/server/mysql-5.6.21/include --with-mysql-libs=/alidata/server/mysql-5.6.21/lib

configure程序有很多运行选项。完整的列表可以通过使用 --help 开关得到。最重要的如下:

--prefix, 定义将Coreseek安装到何处;比如 --prefix=/usr/local/coreseek (以下全部示例都假定Coreseek安装在这个位置)

--with-mysql, 当自动检测失败时,指出在那里能找到MySQL 头文件和库文件;

--with-pgsql, 指出在那里能找到PostgreSQL头文件和库文件.

--with-mmseg, 启用基于MMSeg的中文分词法,并指出在那里能找到MMSeg头文件和库文件.

--with-python, 启用Python数据源支持. 需要预先安装Python2.6.

编译源代码生成二进制程序:

$ make

出现undefined reference to `libiconv'的类似错误,可以按照如下方法处理:

##方法一:(Linux使用)

## 直接执行:export LIBS="-liconv"

##然后make clean,再次configure后,进行编译安装make && make install

## 方法二:

## 首先configure,然后vim src/makefile

## 在其中搜索lexpat,在其后加上 -liconv

## 修改后该行应该为:-lexpat -liconv -L/usr/local/lib

## 然后再次make && make install

安装二进制程序到你设定的目录下: (类Unix操作系统下默认为 /usr/local/bin/ , 但是可以被 configure --prefix) 修改安装目录

$ make install

$ cd ../

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

$ cd testpack

$ cat var/test/test.xml #此时应该正确显示中文

$ /usr/local/mmseg/bin/mmseg -d /usr/local/mmseg/etc var/test/test.xml

##中文分词测试,如果显示不正常,请检查当前环境下的locale和UTF-8中文字符显示设置

$ /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc src/t1.txt

中文/x 分/x 词/x 测试/x

中国人/x 上海市/x

若发现错误

error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory

解决方式

cd /etc

ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2

ldconfig

$ /usr/local/coreseek/bin/indexer -c etc/csft.conf --all  #coreseek中文全文检索测试

##以下为正常情况下的提示信息:

Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)]

Copyright (c) 2007-2010,

Beijing Choice Software Technologies Inc (http://www.coreseek.com)

出现/usr/local/coreseek/bin/indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory的类似错误,可以按照如下方法处理:

##方法一:

## vi /etc/ld.so.conf

## 将下面这句加到文件到尾部,并保存文件 /alidata/server/mysql-5.6.21/lib

## ldconfig

## 方法二:

## locate libmysqlclient #运行该命令找到关于libmysqlclient.so.18的文件

## ln -s /alidata/server/mysql-5.6.21/lib/libmysqlclient.so.18 /usr/bin/libmysqlclient.so.18

$ /usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索

下面开始sphinx与mysql的配置

创建配置sphinx与mysql的配置文件

# vi /usr/local/coreseek/etc/csft_mysql.conf

数据表字段取值对应到Coreseek的索引中,其关系如下:

数据库:

SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, score, title, content FROM documents

id     : 自增字段,表的主键,整数

group_id  : 整数字段

date_added : 整数字段,使用UNIX_TIMESTAMP可将datetime类型转换为整数的timestamp

score    : 浮点数字段

title    : 字符串字段

content   : 文本字段

业务分析:

文档编号:id

查询过滤:分组(group_id),时间(date_added),score

全文检索:title、content

Coreseek索引配置:

id   :ID属性,必须提供,在SQL语句中字段名称不限

对应SQL查询的第一个字段,系统自动使用,内部属性名为@id,不需要也不能在配置中设定

使用SetFilter()过滤,或者使用SetIDRange()过滤;

SphinxSE之中,使用filter或者minid, maxid过滤

sql_attr_uint   :整数属性,以上group_id、date_added都可用此设置,使用SetFilter()过滤,

或者使用SetFilterRange()过滤;

SphinxSE之中,使用filter或者range过滤;

sql_attr_float   :浮点数属性,以上score可用此设置,使用SetFilterFloatRange()进行范围过滤,

SphinxSE之中,使用range过滤;

sql_attr_timestamp:timestamp属性,整数,以上date_added可用此设置,可用SetFilter()过滤

或者使用SetFilterRange()过滤;

SphinxSE之中,使用filter或者range过滤

sql_attr_str2ordinal:字符串序列属性,以上title可用此设置,仅用于根据该字段排序

但是设置后,该属性不可用于过滤,也不会保存实际字符串内容,更不能全文检索

搜索结果中,其对应的信息为整数,由系统计算出来的排序序列值

全文检索字段   :全文检索字段,以上title、content等字符串或者文本的字段都可用此设置

任何出现在SQL语句中,既不是ID属性,也没有使用“sql_attr_类型”设置的字段,都是全文字段,

使用Query()搜索;

SphinxSE之中,使用query的查询文本进行搜索

其他更详细和丰富的类型,请前往中文手册了解。

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

#源定义

source main

{

type= mysqlsql_host=localhost

sql_user=didiphp

sql_pass=DotDeeMy365com

sql_db=new_didi

sql_port= 3306sql_query_pre=SET NAMES utf8

sql_query= SELECT id, brand_id, seller_id, UNIX_TIMESTAMP(create_time) AS create_time, name, sell_price, market_price, cost_price, store_nums, img, ad_img, content, keywords, description, search_words, visit, favorite, comments, sale, detail, postage,postage_add FROM mall_goods#sql_query第一列id需为整数

#name、content作为字符串/文本字段,被全文索引

sql_attr_uint = brand_id #从SQL读取到的值必须为整数

sql_attr_timestamp = create_time #从SQL读取到的值必须为整数,作为时间属性

sql_query_info_pre= SET NAMES utf8 #命令行查询时,设置正确的字符集

sql_query_info = SELECT id, brand_id, seller_id, UNIX_TIMESTAMP(create_time) AS create_time, name, sell_price, market_price, cost_price, store_nums, img, ad_img, content, keywords, description, search_words, visit, favorite, comments, sale, detail, postage, postage_add FROM mall_goods WHERE id=$id #命令行查询时,从数据库读取原始数据信息

}#index定义

index main

{

source= main #对应的source名称

path = /usr/local/coreseek/var/data/mysql #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...

docinfo =extern

mlock= 0morphology=none

min_word_len= 1html_strip= 0

#中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/

charset_dictpath = /usr/local/mmseg/etc/ #BSD、Linux环境下设置,/符号结尾

#charset_dictpath = etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...

charset_type = zh_cn.utf-8}#全局index定义

indexer

{

mem_limit=128M

}#searchd服务定义

searchd

{

listen= 9312read_timeout= 5max_children= 30max_matches= 1000seamless_rotate= 0preopen_indexes= 0unlink_old= 1pid_file= /usr/local/coreseek/var/log/searchd_mysql.pid #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...

log = /usr/local/coreseek/var/log/searchd_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...

query_log = /usr/local/coreseek/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...

binlog_path = #关闭binlog日志

}

调用命令列表:

启动后台服务(必须开启)

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

如果报错

WARNING: index 'mysql': preload: failed to open var/data/mysql.sph: No such file or directory; NOT SERVING

FATAL: no valid indexes to serve

解决

新建立索引

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

更改

mysql的问题 stock路径问题,需要在my.cnf更改 /var/lib/mysql/mysql.sock

vim /etc/my.cnf

#socket         = /tmp/mysql.sock

socket          = /var/lib/mysql/mysql.sock

防火墙问题  关闭防火墙

启动

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

/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft_mysql.conf

保证跨机器访问,关闭防火墙

service iptables stop

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

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

执行增量索引

# /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf delta --rotate

合并索引

# /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf --merge main delta --rotate --merge-dst-range deleted 0 0

(为了防止多个关键字指向同一个文档加上--merge-dst-range deleted 0 0)

后台服务测试

# /usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/csft_mysql.conf  aaa

关闭后台服务

# /usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft_mysql.conf --stop

自动化命令:

crontab -e

*/1 * * * * /bin/sh /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf delta --rotate

*/5 * * * * /bin/sh /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf --merge main delta --rotate --merge-dst-range deleted 0 0

30 1 * * *  /bin/sh /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf --all --rotate

以下任务计划的意思是:每隔一分钟执行一遍增量索引,每五分钟执行一遍合并索引,每天1:30执行整体索引

参考:

http://www.coreseek.cn/products-install/install_on_bsd_linux/

http://blog.csdn.net/e421083458/article/details/21529969

http://www.yuansir-web.com/2013/03/21/sphinx-%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8D-coreseekmmseg%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AE%E5%92%8C%E7%A4%BA%E4%BE%8B/

http://www.cnblogs.com/rhythmK/archive/2012/10/24/2736873.html

http://blog.csdn.net/fafa211/article/details/8028921

http://www.coreseek.cn/docs/coreseek_4.1-sphinx_2.0.1-beta.html

coreseek mysql.sock_Coreseek + Sphinx + Mysql + PHP构建中文检索引擎相关推荐

  1. mysql coreseek_Linux下PHP+MySQL+CoreSeek中文检索引擎配置

    说明: 操作系统:CentOS 5.X 服务器IP地址:192.168.21.127 Web环境:Nginx+PHP+MySQL 站点根目录:/usr/local/nginx/html 目的:安装co ...

  2. linux php mysql 中文_Linux下PHP+MySQL+CoreSeek中文检索引擎配置 | 系统运维

    说明: 操作系统:CentOS 5.X 服务器IP地址:192.168.21.127 Web环境:Nginx+PHP+MySQL 站点根目录:/usr/local/nginx/html 目的:安装co ...

  3. mysql coreseek_coreseek (sphinx)+ Mysql + Thinkphp搭建中文搜索引擎详解

    一, 前言 1,研究coreseek的动机 我有一个自己的笔记博客,经常在上面做一些技术文章分析.在查询一些文章的时候,以前只能将要查询的内容去mysql中用like模糊匹配.在文章多了的情况下,这样 ...

  4. Coreseek中文检索引擎

    前面几篇文章介绍了Sphinx检索引擎,但是Sphinx只支持英文. Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处 ...

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

    主要参考文档:http://www.coreseek.cn/products-install/install_on_bsd_linux/ 一. 32位版本: coreseek安装需要预装的软件: ap ...

  6. Coreseek开源中文检索引擎 coreseek-4.1 win7安装教程

    1692 首页到 Coreseek官网下载 http://www.coreseek.cn/  coreseek-4.1-win32,下载后解压到相应目录,我这里安装的是在d:/web/coreseek ...

  7. ibatis 模糊查询 mysql_Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办

    项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空. 由于是使用GET方式请求,所以为了确保中文 ...

  8. coreseek mysql_coreseek (sphinx)+ Mysql + Thinkphp搭建中文搜索引擎详解

    一, 前言 1,研究coreseek的动机 我有一个自己的笔记博客,经常在上面做一些技术文章分析.在查询一些文章的时候,以前只能将要查询的内容去mysql中用like模糊匹配.在文章多了的情况下,这样 ...

  9. mysql coreseek_centos+php+coreseek+sphinx+mysql之一coreseek安装篇

    首先附上coreseek4.1版本下载 前期准备工作: yum install make gcc g++ automake libtool MySQL-client libMySQLclient15- ...

最新文章

  1. 英伟达“暴力碾压”谷歌:53分钟训练完BERT,2.2毫秒完成推理,创下NLP三项新纪录...
  2. sklearn学习_01
  3. Appium 控件定位链接整理(appiumdriver)
  4. Excel数据导入Oracle数据库
  5. 处理uniapp开发安卓app进入打开手机的游戏加速模式
  6. vfp python_Visual Fox Pro和Python
  7. android获取wifi支持的信道,Android获取当前连接wifi的信道
  8. 自制BSL编程MSP430单片机
  9. shmget() -- 建立共享内存[zz] - [LINUX]
  10. php代码画表情包,canvas绘制表情包的示例代码
  11. 《交互式程序设计 第2版》一1.2 交互领域中的编程
  12. xshell6使用技巧_Xshell6的正确打开方式
  13. deadine怎么修改服务器,PDG使用Deadline配置教程
  14. CGCTF平台web题writeup
  15. 【无标题】python利用公式法计算圆周率
  16. ②、iOS-RAC-核心类分析-RACPassthroughSubscriber订阅者-RACScheduler调度者-RACDisposable销毁者-RACObseve监听者-RACSubject
  17. c语言输出数字漏斗图形_入门c语言必刷的五道题
  18. 互动作业显示服务器异常,互动作业打不开怎么办 互动作业打不开解决方法
  19. 【阿里云日志】查询指南
  20. 亮度均匀性测试(shading)—imatest

热门文章

  1. 【Python】【Python库】Python3.7.2 - 字符串str类 (1)
  2. string与string.h的区别
  3. com.android.mms 占cpu,怎么CPU占用这么高啊!
  4. 关于webpack4下css提取打包去重复的那些事
  5. 11月16日云栖精选夜读:阿里云 oss JavaScript客户端签名文件上传 vue2.0
  6. OwlCarousel.js 帮助API
  7. SQL Server 2016 开发版将免费
  8. MLPlatform project的统一结构-----------运行机制(原理)
  9. 负载均衡集群HAProxy讲解篇
  10. 超实用的JavaScript技巧及最佳实践