zoukankan      html  css  js  c++  java
  • centos7下搭建sphinx全文检索引擎

      Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用 程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL 也设计了一个存储引擎插件

    我要使用Sphinx需要做以下几件事:

    1)、首先得有数据

    2)、建立Sphinx配置文件

    3)、生成索引

    4)、启动Sphinx

    5)、php操作使用之(调用api或search.exe程序进行查询)

    具体搭建步骤:

    先下载好sphinx的压缩包。

    1、更新依赖包以及安装编译环境
       mount /dev/cdrom /media/cdrom  #先挂载

      yum -y install m4 autoconf automake libtool

      yum -y install gcc gcc-c++ wget

      yum -y install mysql-devel

    (以上是需要的编译环境,如果有就不用重新安了,建议重新安,否则不知道那些已经安装)

    2、下载coreseek -3.2.14.tar.gz(这是一个中文分词插件压缩包)

      tar xzvf coreseek-3.2.14.tar.gz
      cd coreseek-3.2.14
      cd mmseg-3.2.14/
      ./bootstrap
      ./configure --prefix=/usr/local/mmseg3
      make
      make install

    3、安装csft-3.2.14

      cd ../csft-3.2.14/
      sh buildconf.sh
      ./configure --prefix=/usr/local/coreseek --without-python --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql --host=arm

      vi src/sphinxexpr.cpp
    直接修改文件的1746, 1777和1823行,然后将所有的T val = ExprEval ( this->m_pArg, tMatch ).....修改为T val = this->ExprEval ( this->m_pArg, tMatch )

      make
      make install

    进入配置目录通过命令ls可以看到3个文件
    example.sql  sphinx.conf.dist  sphinx-min.conf.dist
    其中example.sql是示例sql脚本我们将其导入到数据库中的test数据库中作为测试数据(会创建两张表 documents和tags)

    ---------------

    4、配置文件更改:

    vi /usr/local/coreseek/etc/sphinx.conf
    输入以下内容
    source main_src
    {
        type                    = mysql
        sql_host                = 192.168.1.70     #查询的服务器ip地址
        sql_user                = root                   #用户名
        sql_pass                =root                   # 密码
        sql_db                    =test       #使用的数据库
        sql_port                = 3306          # 数据库端口3306
        sql_sock                                = /tmp/mysql.sock
        sql_query_pre                 = SET NAMES utf8      #定义查询时的编码
        sql_query                =
            SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content
            FROM documents                                      #数据源配置核心语句,sphinx使用此语句从数据库中拉取数据
        sql_attr_uint            = group_id
        sql_attr_timestamp        = date_added
        sql_query_info            = SELECT * FROM documents WHERE id=$id       #设置命令行下返回的信息。
    }
    index main    #索引名称
    {
        source                    = main_src      #数据源名称
        path                    = /usr/local/coreseek/var/data/test1     
        docinfo                    = extern
        charset_type            = zh_cn.utf-8
        mlock            = 0
        morphology        = none
        min_word_len        = 1
        html_strip        = 0
        charset_dictpath        = /usr/local/mmseg3/etc/     #中文分词检索路径
        ngram_len                    = 0
    }
    indexer
    {
        mem_limit                = 32M
    }
    searchd
    {
        port                    = 9312
        log                        = /usr/local/coreseek/var/log/searchd.log
        query_log                = /usr/local/coreseek/var/log/query.log
        read_timeout            = 5
        max_children            = 30
        pid_file                = /usr/local/coreseek/var/log/searchd.pid
        max_matches                = 1000
        seamless_rotate            = 1
        preopen_indexes            = 0
        unlink_old                = 1
    }


    说明:

    代码段source main_src{***} 代表数据源里面主要包含了数据库的配置信息,main_src表示数据源名字,可以随便写。

    代码段index main{***} 代表为哪个数据源创建索引,与source *** 是成对出现的,其中的source参数的值必须是某一个数据源的名字。
    其他参数可以查看手册,这里不再赘述。
    生成索引

    /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf --all     #--all表示生成所有主、增索引,也可写单独的索引名称
    启动命令
    /usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/sphinx.conf

    执行后可以在/usr/local/coreseek/var/data目录中看到多出一些文件,是以索引名为文件名的不同的扩展名的文件
    在不启动sphinx的情况下即可测试命令:
      /usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/sphinx.conf 中国

    以上就算sphinx搭建完成了,一般会配置增量索引,与主索引搭配。

  • 相关阅读:
    【3006】统计数字
    【5001】n皇后问题
    【7001】n阶法雷序列
    【9402】倒序数
    【9705】&&【a801】细胞
    【9802】闭合曲线面积
    【a803】营救
    【9112】求2的n次方的精确值
    V8引擎实现标准ECMA-262(三)
    仔细看看Javascript中的逻辑与(&&)和逻辑或(||)
  • 原文地址:https://www.cnblogs.com/wangzhilei/p/6711035.html
Copyright © 2011-2022 走看看