coreseek 中文检索

简单介绍:最近有人在问我,说mysql5.6既然已经支持了Innodb的全文索引了,为什么依然有人在使用sphinx这样的软件针对mysql 数据库呢.

第一:目前仍然后很多公司在使用mysql5.5,针对innodb 存储引擎则需要全文索引的软件来帮忙

第二:mysql并不是一款中国人开发的服务,因此对中文分词的支持是不行的,由此引出接下来所要讲解的coreseek 中文检索

因有童鞋对安装和基本使用有困惑,因而将本人的基本操作写上,如有疑问请留言

安装

稳定版

wget http://219.232.239.243/uploads/csft/3.2/coreseek-3.2.14.tar.gz
curl -O -L http://mirrors.kernel.org/gnu/autoconf/autoconf-2.13.tar.gz

针对低版本则依赖包也要使用低版本的 如果后面遇到must contain _cv_ to be cached类似的报错就是 这个版本太高导致

测试版

 wget http://219.232.239.243/uploads/csft/4.0/coreseek-4.1-beta.tar.gz

依赖包

[[email protected] etc]# yum -y install gcc make gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel
[[email protected] mmseg-3.2.14]# history  |grep yum
   58  yum -y install gcc make libiconv python
   75  yum -y install gcc-c++ 
 
[[email protected] src]# tar -xf coreseek-4.1-beta.tar.gz 
[[email protected] src]#curl -O -L http://mirrors.kernel.org/gnu/m4/m4-1.4.13.tar.gz 
[[email protected] src]# curl -O -L http://mirrors.kernel.org/gnu/autoconf/autoconf-2.65.tar.gz  
[[email protected] src]# curl -O -L http://mirrors.kernel.org/gnu/automake/automake-1.11.tar.gz 
[[email protected] src]#  curl -O -L http://mirrors.kernel.org/gnu/libtool/libtool-2.2.6b.tar.gz

全部编译安装

./configure --prefix=/usr/local   
 make && make install   
 cd ..
[[email protected] bin]# iconv --version

中文分词需要这个支持

环境修改

[[email protected] src]# locale
LANG=en_US.UTF-8
[[email protected] src]# vim /etc/sysconfig/i18n 
[[email protected] etc]# cat /etc/sysconfig/i18n 
#LANG="en_US.UTF-8"
LANG="zh_CN.UTF-8"
#SYSFONT="latarcyrheb-sun16"
SYSFONT="latarcyrheb-sun16"
[[email protected] ~]# su - root(或者重启环境才会生效)
[[email protected] src]# tar -xf coreseek-4.1-beta.tar.gz
[[email protected] var]# cd /usr/local/src/coreseek-4.1-beta/testpack/var
[[email protected] var]# cat test/test.xml 
<?xml version="1.0" encoding="utf-8"?>
<sphinx:docset>
        <sphinx:schema>
        <sphinx:field name="subject"/> 
        <sphinx:field name="content"/>
        <sphinx:attr name="published" type="timestamp"/>
        <sphinx:attr name="author_id" type="int" bits="16" default="1"/>
        </sphinx:schema>
        <sphinx:document id="1">
                <subject>愚人节最佳蛊惑爆料 谷歌300亿美元收购百度</subject>
                <published>1270131607</published>
                <content>据国外媒体报道,谷歌将巨资收购百度,涉及金额高达300亿美元。谷歌借此重返大陆市场。
该报道称,目前谷歌与百度已经达成了收购协议,将择机对外公布。百度的管理层将100%保留,但会将项目缩减,包括有啊商城,以及目前实施不力的凤巢计划。正在进行测试阶段的视频网站qiyi.com将输入更多的Youtube资源。(YouTube在大陆区因内容审查暂不能访问)。

看到了有中文支持

编译安装

[[email protected] src]# cd coreseek-4.1-beta/mmseg-3.2.14/
[[email protected] mmseg-3.2.14]# ./bootstrap
[[email protected] mmseg-3.2.14]# ./configure --prefix=/usr/local/mmseg/
[[email protected] mmseg-3.2.14]# make && make install
 
[[email protected] bin]# /usr/local/mmseg/bin/mmseg -d /usr/local/mmseg/etc/
[[email protected] coreseek-3.2.14]# cd csft-3.2.14/
[[email protected] csft-3.2.14]# ls
acinclude.m4  configure.ac  INSTALL       pymmseg         sphinx-min.conf.in
aclocal.m4    contrib       libexpat      python.m4       sphinx.spec
api           COPYING       libstemmer_c  smoke.sh        sphinx.workspace
buildconf.sh  csft.doc      Makefile.am   sphinx03.sln    src
codeblocks    csft.pytest   Makefile.in   sphinx05.sln    test
config        doc           misc          sphinx08.sln    win
configure     example.sql   mysqlse       sphinx.conf.in
[[email protected] csft-3.2.14]# sh buildconf.sh 
[[email protected] csft-4.1]# ./configure --prefix=/usr/local/coreseek/ --without-python --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/ --with-mysql
[[email protected] csft-4.1]# make && make install 至此xml 的已经编译完成

支持mysql 的方式

[[email protected] csft-4.1]# yum -y install mysql-devel libxml2-devel expat-devel
 
Make clean (清楚之前的编译)
./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
Make && make install 至此Mysql数据源安装完成

实例:

使用默认的sql 和配置文件做一次

mysql> GRANT ALL PRIVILEGES ON *.* TO ‘test‘@‘%‘ WITH GRANT OPTION;
mysql> GRANT PROXY ON ‘‘@‘‘ TO ‘test‘@‘%‘ WITH GRANT OPTION; 
mysql>flush privileges;
 
[[email protected] etc]# mysql -utest < example.sql 
[[email protected] etc]# pwd
/usr/local/coreseek/etc
 
[[email protected] etc]# cp sphinx.conf.dist csft.conf
[[email protected] etc]# vi  csft.conf

打开第32行
csft.conf
sql_sock = /tmp/mysql.sock 根据你的mysql 的这个的实际位置
sql_query_pre = SET NAMES utf8
找到sql_query_info = SELECT * FROM documents WHERE id=$id 在该行上面加上 sql_query_info_pre = SET NAMES utf8 (作用是为了中文能显示)

[[email protected] etc]# /usr/local/coreseek/bin/indexer  -c /usr/local/coreseek/etc/csft.conf --all
Coreseek Fulltext 4.1 [ Sphinx 2.0.2-dev (r2922)]
Copyright (c) 2007-2011,
Beijing Choice Software Technologies Inc (http://www.coreseek.com)
 
 using config file ‘/usr/local/coreseek/etc/csft.conf‘...
indexing index ‘test1‘...
collected 4 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 4 docs, 193 bytes
total 0.007 sec, 24823 bytes/sec, 514.46 docs/sec
indexing index ‘test1stemmed‘...
collected 4 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 4 docs, 193 bytes
total 0.003 sec, 49411 bytes/sec, 1024.06 docs/sec
skipping non-plain index ‘dist1‘...
skipping non-plain index ‘rt‘...
total 6 reads, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avg
total 18 writes, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avg
 
[[email protected] data]# pwd
/usr/local/coreseek/var/data

[[email protected] data]# ls 这些文件就是上面indexer命令生成的
test1.spa  test1.sph  test1.spk  test1.spp  test1stemmed.spa  test1stemmed.sph  test1stemmed.spk  test1stemmed.spp
test1.spd  test1.spi  test1.spm  test1.sps  test1stemmed.spd  test1stemmed.spi  test1stemmed.spm  test1stemmed.sps
[[email protected] data]# /usr/local/coreseek/bin/search test
#就可以搜索到定义的数据库里的表内容了
1. document=1, weight=2421, group_id=1, date_added=Wed Aug 13 01:29:11 2014
        id=1
        group_id=1
        group_id2=5
        date_added=2014-08-13 01:29:11
        title=test one
        content=this is my test document number one. also checking search within phrases.
2. document=2, weight=2421, group_id=1, date_added=Wed Aug 13 01:29:11 2014
        id=2
        group_id=1
        group_id2=6
        date_added=2014-08-13 01:29:11
        title=test two
        content=this is my test document number two
3. document=4, weight=1442, group_id=2, date_added=Wed Aug 13 01:29:11 2014
        id=4
        group_id=2
        group_id2=8
        date_added=2014-08-13 01:29:11
        title=doc number four
        content=this is to test groups
mysql> update test.documents set content=‘草泥马‘;
[[email protected] etc]# /usr/local/coreseek/bin/search test
Coreseek Fulltext 4.1 [ Sphinx 2.0.2-dev (r2922)]
Copyright (c) 2007-2011,
Beijing Choice Software Technologies Inc (http://www.coreseek.com)
 
 using config file ‘/usr/local/coreseek/etc/csft.conf‘...
index ‘test1‘: query ‘test ‘: returned 3 matches of 3 total in 0.000 sec
 
displaying matches:
1. document=1, weight=2421, group_id=1, date_added=Wed Aug 13 01:29:11 2014
        id=1
        group_id=1
        group_id2=5
        date_added=2014-08-13 01:29:11
        title=test one
        content=草泥马
2. document=2, weight=2421, group_id=1, date_added=Wed Aug 13 01:29:11 2014
        id=2
        group_id=1
        group_id2=6
        date_added=2014-08-13 01:29:11
        title=test two
        content=草泥马
3. document=4, weight=1442, group_id=2, date_added=Wed Aug 13 01:29:11 2014
        id=4
        group_id=2
        group_id2=8
        date_added=2014-08-13 01:29:11
        title=doc number four
        content=草泥马

详细具体使用的方法参照:http://www.coreseek.cn/

coreseek 中文检索

时间: 2024-07-29 22:54:52

coreseek 中文检索的相关文章

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/ h

开源中文检索引擎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 |

Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办--转自http://www.jb51.net/article/88236.htm

这篇文章主要介绍了Mybatis使用MySQL模糊查询时输入中文检索不到结果的解决办法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空. 由于是使用GET方式请求,所以为了确保中文不乱码,在控制台接收到请求参数后,对中文进行了一次编码. ? 1 2 3 4 5 try { realName = new String(realNam

3.4 针对中文检索的问题

相对于英文检索,中文检索有两个特别要考虑的问题:编码问题和中文分词问题. 一.编码问题 1. 为了解决中文编码问题,我们在网页结构化信息预处理的时候统一采用utf-8编码: 2. 在Lucene创建索引的时候,构造一个BufferedReader对象以utf-8编码读取文件,使用如下语句: BufferedReader br = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8)); 二.中文分词问题

coreseek中文搜索

coreseek的安装和使用 准备软件包 coreseek-3.2.14.tar.gz 其他汁源 coreseek中文索引-示例文件.zip sphinx配置文件详解.txt 1.安装组件 yum -y install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel 2.安装mmseg $ cd /usr/local/tools/ $ tar xf coresee

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

主要参考文档:http://www.coreseek.cn/products-install/install_on_bsd_linux/ 一. 32位版本: coreseek安装需要预装的软件: apt-get install make gcc g++ automake libtool mysql-client libmysqlclient15-dev libxml2-dev libexpat1-dev 二. CoreSeek快速安装: 安装前,建议查看:源码包说明README:4.0/4.1版

【整理】Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)

一,软件准备 coreseek4.1 (包含coreseek测试版和mmseg最新版本,以及测试数据包[内置中文分词与搜索.单字切分.mysql数据源.python数据源.RT实时索引等测试配置]) Mysql源码包 (必须选择与你已安装mysql的版本一致) 为了避免安装中出现依赖包缺失,你需要打一句鸡血: yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel exp

用 mongodb + elasticsearch 实现中文检索

而 elasticsearch 可以很好的支持各种语言的全文检索,但我们暂时又不想切换到 elasticsearch 作为后端数据库. 当然,可以在 web 应用中存储数据的时候,再主动写一份到 elasticsearch,但这无疑污染了原有的业务逻辑. 在 IT 行业,只要有需求的地方,必然早已有了一堆好用或者不好用的开源轮子. 幸运地是,现在已经有了一些转换方案,可以将 mongodb 中的数据自动导入到 elasticsearch 中,让 elasticsearch 提供中文智能检索. 转

Mysql中文检索匹配与正则

今天在用sql模糊查询包含字母d的时候,发现一些不包含此字母的也被查询出来了: SELECT * FROM custom WHERE custom_realname LIKE '%d%' 查询了一下,发现以下说明: (最后修改为: SELECT * FROM custom WHERE custom_realname LIKE BINARY '%d%' ) 今天在做mysql的一个搜索的时候发现我用 select name from contact where name like '%a%'的时候