zoukankan      html  css  js  c++  java
  • SphinxSE的安装

    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'";

  • 相关阅读:
    VS2008 环境中完美搭建 Qt 4.7.4 静态编译的调试与发布 Inchroy's Blog 博客频道 CSDN.NET
    编写可丢弃的代码
    c++ using namespace std; 海明威 博客园
    解决MySQL server has gone away
    nginx upstream 调度策略
    (2006, 'MySQL server has gone away') 错误解决 dba007的空间 51CTO技术博客
    Linux IO模型漫谈(2) 轩脉刃 博客园
    redis源码笔记 initServer 刘浩de技术博客 博客园
    MySQLdb批量插入数据
    词库的扩充百度百科的抓取你知道这些热词吗? rabbit9898 ITeye技术网站
  • 原文地址:https://www.cnblogs.com/wicub/p/3262749.html
Copyright © 2011-2022 走看看