coreseek sphinx+mmseg 斯分克斯 + 中文分词安装

sphinx 就全文检索技术,在一个大型的网站,有上亿条的数据要检索时,用传统的 mysql语名来查询的话,可能要几分钟甚至十多分钟,没有效率,浪费资源,这时我们可以使用sphinx的全文检索功能,就可以在几秒中之内查到自己想要的数据

sphinx的工作原理大至可以这样理解

它快速检索数据库中的每一条记录,然后把记录中的词分出来,并维护一个 表,表中的记录是分出来的词,对应的数据库的那一条数据的主键,当我们拿到主键后,就可以直接到,数据库表中得到这些数据,提高效率

因为英文的中间会有 空格 作用词与词之间的分隔,而汉语中没有空格作为界限,所以中文分词对sphinx来说是比较困难的,所以有了mmseg ,它可以很好的帮助sphinx来进行中文分词

因此就有了  coreseek 软件,其实限上就是    coreseek = sphinx + mmseg



安装coreseek

从网上下载 coreseek 的软件源码包          coreseek-4.1-beta.tar.gz

解压这个包可以得到  

csft-1.4(就是sphinx  这是在coreseek中的 )                        mmseg-3.2.14(这个就是中文分词)       README.txt            testpack( 这时种编程语言的类包,比如说,对php 来说可以有两种方法使用sphinx

第一种方法: 在testpack文件夹中打到  api 文件夹  再找到 sphinxapi.php     以后在php 文件中引入就可以用了, 如,include_once "sphinxapi.php";

第二种方法:通过 phpize 编辑    把sphinx当作php 的一个模块来加入      spinx.so  ,然后在 php.ini文件中 extensition sphinx.so  就可以了,一劳永逸

)


一. 因为sphinx的安装要mmseg的支持,所以这里我们先装mmseg

首先建一个mmseg的安装目录   mkdir   /usr/local/mmseg

步骤如下   ;

 # cd mmseg-3.2.14

# ./configure --prefix=/usr/local/mmseg

检查编辑环境时会出错  如图  

这时就yum 安装一下  automake   autoconf    还有 libtool (具体的现在还不知道为什么这样做,网上都是说的解决方法而不知为什么)

yum install -y automake autoconf  libtool

然后写入以下命令

# aclocal

这条命令会报错,不管它

# libtoolize   --force

# automake --add-missing

这条命令也会报  warning 不管它

# autoconf

# autoheader

# 再次   ./cofnigure  --prefix= /usr/local/mmseg

这次检查就会通过

这之后就  make  && make install    mmseg安装完成

补充(

原因分析
aclocal是个扫描程序, 负责扫描configure.ac中所有的宏定义并展开,
上面产生的原因就是找不到LIBTOOL宏的定义之处造成的.原因就是aclocal与libtool没有安装在一个相同目录下面aclocal是去默认 安装目录 /usr/share/aclocal下面搜索所有的.m4文件找所定义的宏,但是由于安装了多个aclocal,可能aclocal目录不存在,实际目录为/usr/share/aclocal1.10等,
这就造成了aclocal找不到m4文件的情况, 解决办法就是将文件夹aclocal1.10重命名为aclocal.或者显示指定路径 aclocal -I /usr/share/aclocal1.10 -I /usr/share/libtool/m4 --install 或者把/usr/share/libtool/m4下面的文件都copy至/usr/share/aclocal1.10中.
本人的机器上是/usr/share/下有2个文件夹 一个是aclocal,一个是aclocal-1.11,首先将aclocal的所有文件拷贝到aclocal-1.11下
cp -R /user/share/aclocal/* /usr/share/aclocal-1.11/




二。安装csft  (也就是sphinx)

进入csft目录 ,会发现,居然没有  configure 的文件,晕,我的办法是和上面的流程一样

Sphinx/Coreseek 4.1 执行 buildconf.sh 报错,无法生成configure文件,

  解决方案:

     1. 在 csft-4.1/buildconf.sh 文件中,查找

&& aclocal \

     后加上

&& automake --add-missing \

     2. 在 csft-4.1/configure.ac 文件中,查找:
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
     改为:
AM_INIT_AUTOMAKE([-Wall foreign])

     查找:
AC_PROG_RANLIB 
     后面加上
AM_PROG_AR

      3. 最后,在 csft-4.1/src/sphinxexpr.cpp 文件中, 替换所有:
T val = ExprEval ( this->m_pArg, tMatch );
      成为:
T val = this->ExprEval ( this->m_pArg, tMatch );
以上修改完成后,就生成 ./configure 文件

安装csft
./configure --prefix=/usr/local/coreseek --with-mysql --with-mmseg=/usr/local/mmseg --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/
 
我的mysql是rpm安装的,所以 --with-mysql 后面没有写   如果mysql是编辑安装的, 要写mysql的目录

然后就 make && make install

进入 /usr/local/coreseek/etc目录
因为coreseek的默认配置文件是 csft.conf 所以,把这个目录中的 sphinx.conf.dist 复制一份 为 csft.conf
cp sphinx.conf.dist csft.conf


配置文件
名为main的主数据源:source main{}
继承名为main的增量数据源:source delta:main{}
名为main的主索引:index main{}
继承名为main的增量索引:index delta:main{}
分布式索引:index dist1{}
索引器:indexer{}
服务进程:searchd{}

修改配置文件中主数据源的mysql配置,测试环境的数据源名为main,假设mysql中test有张表叫post
source main
{
    # data source type. mandatory, no default value
    # known types are mysql, pgsql, mssql, xmlpipe, xmlpipe2, odbc
    type                    = mysql

    #####################################################################
    ## SQL settings (for 'mysql' and 'pgsql' types)
    #####################################################################

    # some straightforward parameters for SQL source types
    sql_host                = localhost
    sql_user                = root
    sql_pass                = admin
    sql_db                = test
    sql_port                = 3306    # optional, default is 3306

    
    sql_sock                = /tmp/mysqld.sock  #如果是linux下需要开启,指定sock文件

    sql_query_pre            = SET NAMES utf8   
    sql_query_pre            = SET SESSION query_cache_type=OFF #关闭缓存


    # main document fetch query
    # mandatory, integer document ID field MUST be the first selected column
    sql_query                = \                              #获取数据的sql语句
        SELECT id,title,content FROM post

    
    #sql_attr_uint            = group_id                  #对排序字段进行注释

    
    #sql_attr_timestamp        = date_added            #对排序字段进行注释


    sql_query_info        = SELECT * FROM post WHERE id=$id

    
}
注释掉所有增量数据源,修改主索引

index main
{
        source                  = main

        # index files path and file name, without extension
        # mandatory, path must be writable, extensions will be auto-appended
        path                    = /usr/local/sphinx/var/data/main
 
        docinfo                 = extern
        mlock                   = 0
        morphology              = none
        # default is 1 (index everything)
        min_word_len            = 1

        # charset encoding type
        # optional, default is 'sbcs'
        # known types are 'sbcs' (Single Byte CharSet) and 'utf-8'
        charset_type            = utf-8
        # 'utf-8' default value is
        # charset_table          = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F

}

注释掉所有的增量索引和分布式索引

有些配置改动如下其他配置内容如上文的sphinx.conf
在索引源中注释掉txt
index main{
  #stopwords = G:\data\stopwords.txt
  #wordforms =G:\data\wordforms.txt
  #exceptions =/data/exceptions.txt 
  #charset_type = sbcs
  #添加下面2行 意思是把中文分词加入到配置文件中
  charset_type = zh_cn.utf-8
  charset_dictpath =/usr/local/mmseg/etc/  #你安装mmseg的目录
}

保存配置
建立索引
cd /usr/local/coreseek/bin
./indexer --all
./search 中文词缀




















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于下载coreseek,你可以按照官方提供的教程进行操作。官方页面上有详细的安装指南,你可以访问http://www.coreseek.cn/products-install/install_on_windows/获取更多信息。\[1\]在安装coreseek之前,你需要预先安装一些软件,包括make、gcc、g++、automake、libtool、mysql-client、libmysqlclient15-dev、libxml2-dev和libexpat1-dev。你可以使用命令"apt-get install make gcc g++ automake libtool mysql-client libmysqlclient15-dev libxml2-dev libexpat1-dev"来安装这些软件。\[2\]安装完成后,你可以按照官方提供的命令进行搜索测试。例如,你可以使用命令"bin\search -c etc\csft_mysql.conf 搜索词"来进行搜索。\[3\]请注意,如果搜索结果中出现乱码,这是正常现象。 #### 引用[.reference_title] - *1* *3* [coreseek实战(一):windows下coreseek安装与测试](https://blog.csdn.net/slqgenius/article/details/52304596)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [coreseek](https://blog.csdn.net/weixin_42524395/article/details/114491921)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A黄俊辉A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值