SphinxSE 的使用

SphinxSE 的使用 :wiki

SphinxSE是一个可以编译进MySQL 5.x版本的MySQL存储引擎,尽管被称作“存储引擎”,SphinxSE自身其实并不存储任何数 据。它其实是一个允许MySQL服务器与searchd交互并获取搜索结果的嵌入式客户端,所有的索引和搜索都发生在MySQL之外。

它有一个很大的特点呢,就是如果不支持Sphinxapi的语言,也可以使用Sphinx,理论上说,Sphinapi能做的,SphinxSE都能做。

第一步、 安装SphinxSE

SphinxSE的插件,在Sphinx(Coreseek)解压文件中/lamp/coreseek-3.2.14/csft-3.2.14/mysqlse

(1)、删除mysql

因为安装sphinxSE是嵌入到MySQL中,所以我们要重新编译安装一次MySQL。

(2)、复制sphinx中的mysqlse

把sphinx源码文件夹/lamp/sphinx-0.9.9/mysqlse下的所有文件复制到mysql源码文件中

/lamp/mysql-5.1.59/storage/sphinx下,编译myslq的时候把mysqlse一起编译。

创建sphinx文件夹:

mkdir/lamp/mysql-5.1.59/storage/sphinx

复制mysqlse文件夹到mysql的制定目录下

cp/lamp/sphinx-0.9.9/mysqlse/*/lamp/mysql-5.1.59/storage/sphinx

(3)、编译安装

复制完后进入到mysql源码文件进行编译安装,如下:

cd/lamp/mysql-5.1.59/

环境检测:

./configure --prefix=/usr/local/mysql --with-charset=utf8 --enable-thread-safe-client --enable-assembler --with-readline --with-big-tables --with-named-curses-libs=/usr/lib/libncursesw.so.5 --with-plugins=sphinx

环境检测的时候如果出现这个configure: error: unknown plugin: sphinx错误

没执行sh BUILD/autorun.sh的原因。

sh BUILD/autorun.sh

执行后还会报个错误:

BUILD/autorun.sh: line 41: aclocal: command not foundCan't execute aclocal

是因为aclocal的问题,需要安装3个依赖包在我们的镜像中都有,直接yum安装就可以。

imakeautomakelibtool三个包。

如:yum install imake automake libtool

接下来再编译安装

make && make install

(4)、安装完成后,配置mysql

*添加用户组mysql ,将mysql用户默认组设置为mysql用户组

groupadd mysql

useradd -g mysql mysql

*生成MySQL配置文件

cp support-files/my-medium.cnf /etc/my.cnf

*创建数据库授权表

/usr/local/mysql/bin/mysql_install_db --user=mysql

* 更改安装目录和数据目录的所有者、所属组

chown -R root /usr/local/mysql

chown -R mysql /usr/local/mysql/var

chgrp -R mysql /usr/local/mysql

* 启动MySQL服务

/usr/local/mysql/bin/mysqld_safe --user=mysql &

* 登录MySQL客户端控制台设置指定root密码

/usr/local/mysql/bin/mysql -u root

SET PASSWORD FOR 'root'@'localhost'=PASSWORD('Am@ri31n');

* 添加MySQL启动脚本,设置为只有运行级别3自启动

cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld

chown root.root /etc/rc.d/init.d/mysqld

chmod 755 /etc/rc.d/init.d/mysqld

chkconfig --add mysqld

chkconfig --list mysqld

chkconfig --levels 245 mysqld off

* 进入mysql

/usr/local/mysql/bin/mysql-uroot-p密码;(如进入失败,需要重新启动mysql)

(5)、检测sphinxse

输入这个命令show engines;

显示红格出现的内容就表示sphinxSE安装成功!

第二步:创建SphinxSE引擎表。

CREATE TABLE t1(

id          INTEGER UNSIGNED NOT NULL,

weight      INTEGER NOT NULL,

query       VARCHAR(3072) NOT NULL,

INDEX(query)

) ENGINE=SPHINX CONNECTION="sphinx://localhost:9312/*";

也可以用“*”表示所有索引。

搜索表前三列(字段)的类型必须是 整型(前两个) 和 字符串,这三列分别对应文档ID,匹配权值和搜索查询。这前三个列的映射关系是固定的,你不能忽略这三列中的任何一个,或者移动其位置,或者改变其类型。

第三步:创建sql语句进行连表查询。

$sql="select d.id,d.title,d.content,d.date_added from t1 join documents as d on t1.id = d.id and t1.query='{$keyword}; index=test1'"; 多个索引用逗号分隔。

这个操作主要是通过SphinxSE引擎进行索引的检索,返回的结果交给mysql进行处理。

第四步:处理结果集。

解析出来的结果是一个关联数组,包含字段的值。

如果想获得其他以外的结果,如查询文档数,所用时间等。

用show engine sphinx status;

注意:这句话要在在主查询语句后,立即执行。

第五步:生成摘要,高亮。

从版本0.9.9版本开始,SphinxSE提供了一个UDF函数,允许用户通过MySQL创建摘要。这个功能的作用与API调用BuildExcerprts的功能相似,但可以通过MySQL+SphinxSE来访问。

SphinxSE的摘要,高亮。

在MySQL中创建一个函数:

CREATE FUNCTION sphinx_snippets RETURNS STRING SONAME 'sphinx.so';

函数的名字必须是sphinx_snippets,而不能随便取名。

函数的参数表必须如下:

原型: function sphinx_snippets ( document, index, words, [options] );

Documents  参数:索引的字段名。

Index 参数:索引的名称。

Words 参数:高亮的关键字。

Options 参数(额外选项)必须这样指定:‘值’ AS 选项名。

实例: SELECT sphinx_snippets(content,'test1','{$keyword}','<font color=red>' as before_match,'</font>' as after_match) as content from t1 join documents as d on t1.id = d.id and t1.query='{$keyword};index=test1'";

SphinxSE的安装的更多相关文章

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

          一,软件准备 coreseek4.1 (包含coreseek测试版和mmseg最新版本,以及测试数据包[内置中文分词与搜索.单字切分.mysql数据源.python数据源.RT实时索引等测 ...

  2. coreseek安装

    一.  Sphinx简介 Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎.意图为其他应用提供高速.低空间占用.高结果 相关度的全文搜索功能.Sphinx可以非常容易的与 ...

  3. Sphinx安装配置应用

    Sphinx 是由俄罗斯人Andrew Aksyonoff开发的一个全文搜索引擎.意图为其他应用提供高速.地空间占用.高结果相关度的全文搜索功能.Sphinx可以非常容易的与SQL数据库和脚本语言集成 ...

  4. Sphinx在windows上的安装使用

    Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索, 它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索. Sphinx特别为一 ...

  5. 安装sphinx

    安装Sphinx全文检索服务器 Sphinx默认不支持中文索引及检索, 以前用Coreseek的补丁来解决,目前Coreseek 不单独提供补丁文件,而基于sphinx开发了Coreseek 全文检索 ...

  6. Sphinx学习之sphinx的安装篇

    一.  Sphinx简介 Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎.意图为其他应用提供高速.低空间占用.高结果 相关度的全文搜索功能.Sphinx可以非常容易的与 ...

  7. Sphinx+MySQL5.1x+SphinxSE+mmseg

    一.不停止mysql的情况下安装SphinxSE 1.确定mysql版本,下载对应源码包 此处下载5.1.69的mysql源码包 #wget ftp://ftp.ntu.edu.tw/pub/MySQ ...

  8. sphinx 简介以及安装 以及php拓展开启

    一 sphinx 简介   在 使用mysql数据库过程中,如果想实现全文检索的优化,可以使用mysql自带全文索引,但是不支持中文..关于sphinx的安装网上很多教程写的都 不错比如:http:/ ...

  9. [转]Sphinx+Mysql+中文分词安装-实现中文全文搜索

    From : http://blog.csdn.net/lgm252008/article/details/5373436 1.什么是SphinxSphinx 是一个在GPLv2 下发布的一个全文检索 ...

随机推荐

  1. MVC2 Area实现网站多级目录

    Areas是ASP.NET Mvc 2.0版本中引入的众多新特性之一,它可以帮你把一个较大型的Web项目分成若干组成部分,即Area.实现Area的功能可以有两个组织形式: 在1个ASP.NET Mv ...

  2. UVA5874 Social Holidaying 二分匹配

    二分匹配简单题,看懂题意,建图比较重要. #include<stdio.h> #include<string.h> #define maxn 1100 int map[maxn ...

  3. Mysql常出现的问题

    1.mysql如何导入.txt文件?load data local infile 'D:\\data.txt' into table 表名 fields terminated by '\t';2.my ...

  4. MyBatis架构设计及源代码分析系列(一):MyBatis架构

    如果不太熟悉MyBatis使用的请先参见MyBatis官方文档,这对理解其架构设计和源码分析有很大好处. 一.概述 MyBatis并不是一个完整的ORM框架,其官方首页是这么介绍自己 The MyBa ...

  5. PHP配置,php.ini以及覆盖问题

    在部署一个cms项目到服务器上的时候,因为cms的模板比较老,服务器上用的php是5.3.3版(大于5.3,可以认为是新的),有些页面会显示"deprecated"类别的错误信息. ...

  6. ElasticSearch插件安装Head、Kopf与Bigdesk

    ElasticSearch-Head ElasticSearch-Head 是一个与Elastic集群(Cluster)相交互的Web前台. ES-Head的主要作用 它展现ES集群的拓扑结构,并且可 ...

  7. IOS基础之 (十五)知识点

    一 SEL 1. 方法的存储位置 每个类的方法地址列表都存储在类对象中. 每个方法都有一个与之对应的SEL类型的对象. 根据一个SEL对象就可以找到方法的地址,进而调用方法. Person.h #im ...

  8. OAuth2.0认证和授权原理

    什么是OAuth授权?   一.什么是OAuth协议 OAuth(开放授权)是一个开放标准. 允许第三方网站在用户授权的前提下访问在用户在服务商那里存储的各种信息. 而这种授权无需将用户提供用户名和密 ...

  9. easyloader.js源代码分析

    http://www.cnblogs.com/jasonoiu/p/easyloader_source_code_analysis.html Jquery easyui是一个javascript UI ...

  10. Laravel教程 一:安装及环境配置

    Laravel教程 一:安装及环境配置 此文章为原创文章,未经同意,禁止转载. Homestead 最近在SF上面看到越来越多的Laravel相关的问题,而作为一个Laravel的脑残粉,本来打算有机 ...