Linux下PHP+MySQL+CoreSeek中文检索引擎配置

说明:

操作系统:CentOS 5.X

服务器IP地址:192.168.21.127

Web环境:Nginx+PHP+MySQL

站点根目录:/usr/local/nginx/html

目的:安装coreseek中文检索引擎,配置MySQL数据库访问接口,使用PHP程序实现中文检索。

CoreSeek官方网站:

http://www.coreseek.cn/

http://www.coreseek.cn/products/=%22/products-install/step_by_step/

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

具体操作:

一、安装编译工具

yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel

二 、安装CoreSeek

1、下载CoreSeek

下载地址:http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz

上传coreseek-3.2.14.tar.gz到/usr/local/src目录

2、安装mmseg

cd /usr/local/src

tar zxvf coreseek-3.2.14.tar.gz  #解压

cd coreseek-3.2.14

cd mmseg-3.2.14

./bootstrap    #输出的warning信息可以忽略,如果出现error则需要解决

./configure --prefix=/usr/local/mmseg3  #配置

make  #编译

make install  #安装

3、安装CoreSeek

cd /usr/local/src

cd coreseek-3.2.14

cd csft-3.2.14

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  #配置

make  #编译

make install  #安装

三、测试mmseg分词、coreseek搜索、MySQL数据源

cd /usr/local/src

cd coreseek-3.2.14

cd testpack

cat /usr/local/src/coreseek-3.2.14/testpack/var/test/test.xml    #此时应该正确显示中文,如下图所示

/usr/local/mmseg3/bin/mmseg  -d  /usr/local/mmseg3/etc  /usr/local/src/coreseek-3.2.14/testpack/var/test/test.xml

系统运维  www.osyunwei.com  温馨提醒:qihang01原创内容 版权所有,转载请注明出处及原文链接

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

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

/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx-min.conf.dist

/usr/local/coreseek/bin/indexer -c /usr/local/src/coreseek-3.2.14/testpack/etc/csft.conf --all --rotate  #启动服务,更新索引

测试MySQL数据源:

测试数据库下载:http://www.coreseek.cn/uploads/csft/test/documents.sql

上传documents.sql到/usr/local/src目录

导入数据库到MySQL从服务器:

mysql  -u root -p  #进入MySQL控制台

create database documents;   #创建数据库

use documents    #进入数据库

source  /usr/local/src/documents.sql  #导入备份文件到数据库

exit #退出MySQL控制台

cp  /usr/local/src/coreseek-3.2.14/testpack/etc/csft_mysql.conf  /usr/local/coreseek/etc/csft_mysql.conf  #拷贝MySQL数据源配置文件

ln -s  /usr/local/coreseek/etc/csft_mysql.conf  /etc/csft_mysql.conf  #添加软连接

vi  /etc/csft_mysql.conf  #编辑,修改

###############################################################################

#MySQL数据源配置,详情请查看:http://www.coreseek.cn/products-install/mysql/

#请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库

#源定义

source mysql

{

type                    = mysql

sql_host                = localhost

sql_user                = root  #账号

sql_pass                =123456 #密码

sql_db                    = documents  #MySQL数据库名称

sql_port                = 3306

sql_query_pre            = SET NAMES utf8

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

#sql_query第一列id需为整数

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

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

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

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

sql_query_info            = SELECT * FROM documents WHERE id=$id #命令行查询时,从数据库读取原始数据信息

}

#index定义

index mysql

{

source            = mysql             #对应的source名称

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

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环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...

charset_type        = zh_cn.utf-8

}

#全局index定义

indexer

{

mem_limit            = 1024M  #内存使用限制

max_iops = 100

max_iosize = 0

}

#searchd服务定义

searchd

{

listen                  =   9312

read_timeout        = 5

max_children        = 30

max_matches            = 1000

seamless_rotate        = 0

preopen_indexes        = 0

unlink_old            = 1

pid_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/...

}

#################################################################################

:wq!  #保存退出

cp  /usr/local/src/coreseek-3.2.14/testpack/api/sphinxapi.php  /usr/local/nginx/html/sphinxapi.php  #拷贝测试文件到web站点根目录下

cp  /usr/local/src/coreseek-3.2.14/testpack/api/test_coreseek.php  /usr/local/nginx/html/test_coreseek.php #拷贝测试文件到web站点根目录下

cd /usr/local/nginx/html  #进入web站点根目录

vi test.php  #编辑,添加以下代码

#################################################################################

<?php

//注意文件的编码格式需要保存为为UTF-8格式

require ( "sphinxapi.php" );

$cl = new SphinxClient ();

$cl->SetServer ( ‘127.0.0.1‘, 9312);

//以下设置用于返回数组形式的结果

$cl->SetArrayResult ( true );

/*

//ID的过滤

$cl->SetIDRange(3,4);

//sql_attr_uint等类型的属性字段,需要使用setFilter过滤,类似SQL的WHERE group_id=2

$cl->setFilter(‘group_id‘,array(2));

//sql_attr_uint等类型的属性字段,也可以设置过滤范围,类似SQL的WHERE group_id2>=6 AND group_id2<=8

$cl->SetFilterRange(‘group_id2‘,6,8);

*/

//取从头开始的前20条数据,0,20类似SQl语句的LIMIT 0,20

$cl->SetLimits(0,20);

//在做索引时,没有进行 sql_attr_类型 设置的字段,可以作为“搜索字符串”,进行全文搜索

$res = $cl->Query ( ‘搜索字符串‘, "*" );    //"*"表示在所有索引里面同时搜索,"索引名称(例如test或者test,test2)"则表示搜索指定的

//如果需要搜索指定全文字段的内容,可以使用扩展匹配模式:

//$cl->SetMatchMode(SPH_MATCH_EXTENDED);

//$res=cl->Query( ‘@title (测试)‘ , "*");

//$res=cl->Query( ‘@title (测试) @content (‘网络‘)‘ , "*");

echo ‘<pre>‘;

print_r($res[‘matches‘]);

print_r($res);

print_r($cl->GetLastError());

print_r($cl->GetLastWarning());

echo ‘</pre>‘;

?>

###############################################################################

:wq!  #保存退出

/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf --all --rotate  #建立索引服务

/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft_mysql.conf --console  #启动测试模式

/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 --rotate  #更新索引服务

打开浏览器测试:如下图所示

http://192.168.21.127/test.php

系统运维  www.osyunwei.com  温馨提醒:qihang01原创内容 版权所有,转载请注明出处及原文链接

http://192.168.21.127/test_coreseek.php

四、设置coreseek开机自动后台运行

vi /etc/rc.d/rc.local #编辑,在最后一行添加下面的代码

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

:wq!  #保存退出

vi /usr/local/coreseek/bin/build_index.sh  #添加以下更新索引脚本

#!/bin/sh

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

:wq!  #保存退出

chmod +x /usr/local/coreseek/bin/build_index.sh  #添加脚本执行权限

vi /etc/crontab    #编辑,在最后一行添加以下代码

*/30 * * * * root /usr/local/coreseek/bin/build_index.sh  #每隔30分钟执行一次

:wq!  #保存退出

service crond reload  #重新加载任务计划

至此,Linux下PHP+MySQL+CoreSeek中文检索引擎配置完成。

转载于 http://www.osyunwei.com/archives/7496.html

时间: 2024-11-03 21:45:25

Linux下PHP+MySQL+CoreSeek中文检索引擎配置的相关文章

开源中文检索引擎Coreseek简单使用

Coreseek结合MySQL使用简单示例,如下所示: echo 北京 | iconv -f gbk -t utf-8 | search -c D:\web\coreseek\etc\csft_mysql.con echo 描述 | iconv -f gbk -t utf-8 | search -c D:\web\coreseek\bin\coreseek.conf --stdin | iconv -f utf-8 -t gbk echo 金额 | iconv -f gbk -t utf-8 |

coreseek 中文检索

简单介绍:最近有人在问我,说mysql5.6既然已经支持了Innodb的全文索引了,为什么依然有人在使用sphinx这样的软件针对mysql 数据库呢. 第一:目前仍然后很多公司在使用mysql5.5,针对innodb 存储引擎则需要全文索引的软件来帮忙 第二:mysql并不是一款中国人开发的服务,因此对中文分词的支持是不行的,由此引出接下来所要讲解的coreseek 中文检索 因有童鞋对安装和基本使用有困惑,因而将本人的基本操作写上,如有疑问请留言 安装 稳定版 wget http://219

linux 下安装 mysql 并配置 python 开发环境

1.安装 mysql ,安装过程中将提示设置 root 用户的密码,默认可以设置为 rootadmin . $ sudo apt-get install mysql-server 2.安装 mysql 开发工具(不安装时,安装 MySQL-python 提示错误 "mysql_config not found"). $ sudo apt-get install libmysqld-dev 3.安装 python 的 mysql 库 MySQL-python (首先安装 python-d

JFreechart在linux下不显示及中文乱码问题

一.使用JFreeChart建的报表,在window下能正常显示,但是放到linux下就报错,而且有时候会把tomcat挂掉, 原因是jfreechart的在linux系统中需要访问java awt库提供...... 一.使用JFreeChart建的报表,在window下能正常显示,但是放到linux下就报错,而且有时候会把tomcat挂掉,原因是jfreechart的在linux系统中需要访问java awt库提供的图形功能,而linux下的绝大多数版本的java awt类库都需要x serv

Linux下的Mysql基本语句

Linux下的Mysql基本语句 实验目标 数据库常见概念 SQL语句概述-创建数据库 SQL语句之表的基本操作 实验环境 LAMB环境 服务端:xuegod63.cn     IP:192.168.1.63 客户端:xuegod64.cn                   IP:192.168.1.64   实验概述 数据库相关概念: DBD(数据库开发)  DBA(数据库管理员) SQL :结构化查询语言(Structured QueryLanguage)简称SQL 作用:结构化查询语言是

linux下修改MySQL root密码后数据库消失

Linux系统下如果没有通过password()函数修改mysql的root密码就会导致mysql数据库消失.有些人可能不知道而直接修改了mysql的root密码,于是产生了mysql数据库消失的问题,这个时候该怎么处理呢? 可以用下面的办法解决: 1.修改mysql数据库目录配置文件:my.cnf(或my.ini) [mysqld]下添加: skip-grant-tables 2.重启mysql服务,然后用mysql 登录. 3.进入后,可以看到,mysql数据库已呈现,然后修改密码: upd

Linux下关于解决JavaSwing中文乱码的情况

1.下载simsun.ttc(宋体).http://download.csdn.net/detail/lazy_p/4436971 2.linux中跳转到JDK安装目录 ..../jre/lib/fonts 3.sudo mkdir fallback  然后将Windows所拷贝的字体放到fallback中 相关解决网址 http://www.linuxidc.com/Linux/2009-10/21991.htm http://www.cnblogs.com/zhangyongli2011/a

Linux下查看mysql、apache是否安装,安装,卸载等操作

Linux下查看mysql.apache是否安装,并卸载. 指令 ps -ef|grep mysql 得出结果 root     17659     1  0  2011 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysql

远程连接linux下的mysql Err1045 Err2003解决办法

本人linux系统 Centos7 1.Err2003 我个人的情况是因为linux中防火墙开启并阻止了3306这个mysql端口的远程连接 解决办法: CentOS 7.0默认使用的是firewall作为防火墙,现在要将其关闭 systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止firewall开机启动firewall-cmd --state #查看默认防火墙状态(关闭后显示not