Sphinx+MySQL5.1x+SphinxSE+mmseg…
来源:互联网 发布:友邦旺旺群发软件 编辑:程序博客网 时间:2024/06/05 12:19
Sphinx
Sphinx的特性
更多特性参考手册。
原生MySQL存储引擎检索流程:
基于Sphinx存储引擎检索:
开始
本文以CentOS5.5+mysql-5.1.55+sphinx-0.9.9(coreseek-3.2.14.tar.gz目前最新稳定版)为例介绍
安装前准备文件
Sphinx+MySQL5.1x+SphinxSE存储引擎+mmseg中文分词搜索引擎架构搭建过程。
通过yum命令更新依赖包(与php环境搭建依赖包一起更新了)
yum
安装MySQL+SphinxSE,进入软件包目录
tar
tar
cp
cd
./BUILD/autorun.sh
./configure
make
make
。。。省略若干配置步骤,和平时配置MySQL没什么两样。
安装完成启动MySQL后查看sphinx存储引擎是否安装成功
在mysql命令行下执行
show
如果出现如下图红色方框内的信息说明SphinxSE已经安装成功!
安装Sphinx全文检索服务器
Sphinx默认不支持中文索引及检索,
我们来看一下的安装过程:
安装autoconf
tar
cd
./configure
make
make
cd
安装Coreseek
tar
cd
cd
./bootstrap
./configure
make
make
cd
sh
./configure
make
make
cd
进入配置目录通过命令ls可以看到3个文件
example.sql
其中example.sql是示例sql脚本我们将其导入到数据库中的test数据库中作为测试数据(会创建两张表
vi
输入以下内容
source
{
type=
sql_host=
sql_user=
sql_pass=12345678
sql_db=
sql_port=
sql_sock
sql_query_pre
sql_query=
SELECT
FROM
sql_attr_uint=
sql_attr_timestamp=
sql_query_info=
}
index
{
source=
path=
docinfo=
charset_type=
mlock=
morphology=
min_word_len=
html_strip=
charset_dictpath=
ngram_len
}
indexer
{
mem_limit=
}
searchd
{
port=
log=
query_log=
read_timeout=
max_children=
pid_file=
max_matches=
seamless_rotate=
preopen_indexes=
unlink_old=
}
说明:
代码段source
代码段index
其他参数可以查看手册,这里不再赘述。
生成索引
/usr/local/coreseek/bin/indexer
其中参数--all表示生成所有索引
当然也可以是索引的名字例如:/usr/local/coreseek/bin/indexer
执行后可以在/usr/local/coreseek/var/data目录中看到多出一些文件,是以索引名为文件名的不同的扩展名的文件
在不启动sphinx的情况下即可测试命令:
可以看到将内容中含有number数据的数据查询出来。
过滤查询
/usr/local/coreseek/bin/search
限定group_id
同样也可以测试中文(需将命令行终端编码调整为utf-8)
/usr/local/coreseek/bin/search
可以看到我们输入的查询文字已经被拆分成了两个词,只是因为我们的测试数据中没有中文数据查询结果为空。我们插入几条新数据。
INSERT
`id`
`group_id`
`group_id2`
`date_added`
`title`
`content`
)
VALUES
NULL
),
NULL
);
我们再来看以下数据库中的主要数据
插入新数据后需要重新生成索引
/usr/local/coreseek/bin/indexer
然后执行查询测试
我们搜索的词语是“研究生创业”,可以看到词语被拆分成了研究生和创业两个词,虽然有两条记录都包含“创业和”研究生”这几个字但是“研究生命科学”中的“研究生”三个字虽然是紧挨着的但是不是一个词语,结果是只匹配一条“研究生自主创业”,我们在搜索“研究”这个词语
/usr/local/coreseek/bin/search
同样匹配一条记录,而“研究生的故事”和“研究生自主创业”的词语却没有被查询出来,可以看出sphinx与分词技术结合可以匹配出相关度更高的结果。
当然我们的目的不仅限与命令行下的测试,我们可以通过搜索API调用来执行搜索,搜索API支持PHP、Python、Perl、Rudy和Java。如果从PHP脚本检索需要先启动守护进程searchd,PHP脚本需要连接到searchd上进行检索:
/usr/local/coreseek/bin/searchd
在解压后的sphinx-0.9.9/api目录下的sphinxapi.php就是sphinx官方为我们提供的API文件(其实也可以使用PHP的sphinx扩展),只需将其包含进自己的PHP脚本文件就可以了。
示例代码:
<?php
include('sphinxapi.php');
执行后的结果:
Array
(
)
在matches中的就是查询结果,我们注意到sphinx是将记录中的主键ID值返回而不是返回所有数据,上面的例子中的键名5就是记录的ID(如果在查询前执行$cl->SetArrayResult
Sphinx存储引擎的使用
SphinxSE是一个可以编译进MySQL
SphinxSE的适用于:
要通过SphinxSE搜索,需要建立特殊的ENGINE=SPHINX的“搜索表”,然后使用SELECT语句从中检索,把全文查询放在WHERE子句中。
创建一张表t1
CREATE
(
)
搜索表前三列的类型必须是INTEGER,INTEGER和VARCHAR,这三列分别对应文档ID,匹配权值和搜索查询。查询列必须被索引,其他列必须无索引。列的名字会被忽略,所以可以任意命名,参数CONNECTION来指定用这个表搜索时的默认搜索主机、端口号和索引,语法格式:CONNECTION="sphinx://HOST:PORT/INDEXNAME"。
执行SQL语句
+----+--------------------+-----------------------+
|
+----+--------------------+-----------------------+
|
+----+--------------------+-----------------------+
1
结果返回了我们想要的数据,可见利用SphinxSE可以仅仅在SQL语句上做很小的改动即可很方便的实现全文检索!
- Sphinx+MySQL5.1x+SphinxSE+mmseg…
- Sphinx+MySQL5.1x+SphinxSE+mmseg中文分词
- Sphinx+MySQL5.1x+SphinxSE+mmseg中文分词
- 在Linux下安装Sphinx+MySQL5.1x+SphinxSE+mmseg中文分词
- sphinx+mysql+mmseg
- sphinx mmseg mysql 中文分词
- sphinx中文分词mmseg的一个bug
- Centos+Mysql+sphinx+mmseg(rhel4) [收藏]
- Mysql+sphinx+mmseg中文分词(ubuntu)
- coreseek-4.1-beta 安装 mmseg sphinx
- sphinx系列之mysql安装sphinxse支持 热插拔安装法
- Sphinx API类型以及SphinxSE实现原理分析
- 安装sphinxse和sphinx时遇到问题求助
- linux 下sphinx的中文分词包mmseg安装
- Sphinx中文分词Coreseek+Mmseg安装配置和示例
- coreseek sphinx+mmseg 斯分克斯 + 中文分词安装
- sphinx sphinxse 扩展系统列(Matchestotal、Matchesfound、Querymsec),显示匹配总行数、查询时间等
- 编译安装Mysql5.1.x并集成Sphinx(新手可直接一步一步照做,其他版本的稍改动即可)
- Nginx兼容框架的pathinfo模式与URL…
- 为mongodb加用户授权并使用RockMon…
- Linux下NFS服务器搭建
- Nginx服务器可能影响文件上传的因…
- 读《简约至上 交互式设计四策略》有感
- Sphinx+MySQL5.1x+SphinxSE+mmseg…
- mysql主从分离
- 使用.htaccess修改php.ini的配置
- 使用PHP Excel类读取和生成ex…
- Symfony框架的搭建
- redis,--->key-value存储系统
- 为PHP增加mongodb扩展模块
- 在线支付接口详解
- 使用php发送电子邮件(phpmailer)