Sphinx以及coreseek的安装及使用

检索结构
php  ->  sphinx  -> mysql
非结构化数据又叫全文数据,非固定长度字段例如文章标题搜索这类适用sphinx

全文数据搜索:
1 顺序扫描 : 如like查找
2 索引扫描 : 把非结构化数据中的内容提取出来一部分重新组织,这部分数据就叫做索引

全文检索分为两个过程
1.创建索引
2.搜索索引

创建索引:
sphinx通过语言处理组件会把搜索语句中的标点符号,语气助词给过滤掉,然后处理完毕后会
分析出一些词语,传给索引组件,然后排序去除重复词语.

搜索索引:
搜索关键字 提交 -> sphinx 分析出文档ID -> mysql通过ID查询数据并返回


中文分词需要coreseek
coreseek 支持中文的全文检索引擎

sphinx的安装
下载源码包 进行源码安装
./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql
make && make install

sphinx 中重要的三个命令(bin目录下)
Indexer 创建索引命令
Searchd 启动进程命令
Search 命令行搜索命令

配置sphinx
cd /usr/local/sphinx/etc
cp sphinx.conf.dist sphinx.conf
vi sphinx.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

}

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



配置完成后,创建索引
命令 indexer
-c 指定配置文件
--all 对所有索引重新编制索引
--rotate 用于轮换索引,主要是在不停止服务的时候,增加索引
--merge 合并索引
/usr/local/sphinx/sbin/indexer -c 
/usr/local/sphinx/etc/sphinx --all
如果报错./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
解决方式:cp /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18

测试
建立索引
[root@localhost bin]# ./indexer --all
Sphinx 0.9.9-release (r2117)
Copyright (c) 2001-2009, Andrew Aksyonoff

using config file '/usr/local/sphinx/etc/sphinx.conf'...
indexing index 'main'...
collected 2 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 2 docs, 47 bytes
total 0.033 sec, 1414 bytes/sec, 60.21 docs/sec
total 1 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg
total 5 writes, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg

搜索
[root@localhost bin]# ./search linux1
Sphinx 0.9.9-release (r2117)
Copyright (c) 2001-2009, Andrew Aksyonoff

using config file '/usr/local/sphinx/etc/sphinx.conf'...
index 'main': query 'linux1 ': returned 1 matches of 1 total in 0.000 sec

displaying matches:
1. document=1, weight=1
    id=1
    title=linux1
    content=salflsdkjsdglds

words:
1. 'linux1': 1 documents, 1 hits

sphinx相当于把数据库数据索引静态化到本地 来加快查询速度 避免消耗数据库,给数据库给降压,当数据更新的时候,需要重新indexer --all 或者用 indexer main重建所有索引 才会搜出新的数据



安装CORESEEK
coreseek里有2个文件夹 一个是mmseg中文分词包 还有一个是csft(其实就是sphinx)包 都要安装 首先安装mmseg中文分词 ./configure --prefix=/usr/local/mmseg 编译时可能会报错config.status: error: cannot find input file: src/Makefile.in 通过automake来解决 首先检查是否安装了libtool如果没有 yum -y install libtool automake 如果automake报错 原因可能是下列 Libtool library used but `LIBTOOL' is undefined The usual way to define `LIBTOOL' is to add `AC_PROG_LIBTOOL' to `configure.ac' and run `aclocal' and `autoconf' again. If `AC_PROG_LIBTOOL' is in `configure.ac', make sure its definition is in aclocal's search path. 原因分析 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/ 然后重新运行aclocal和autoconf aclocal && autoconf 最后再次运行automake automake 然后继续mmseg的安装 ./configure --prefix=/usr/local/mmseg make && make install 如果make 报错 There is an easy fix when you get such messages as "X--tag=CXX: command not found". Just type: export echo=echo And try again. 所以输入 export echo=echo 然后再次运行安装 make && make install 安装csft ./configure --prefix=/usr/local/coreseek --with-mysql=/usr/local/mysql --with-mmseg=/usr/local/mmseg --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/ make && make install 安装完毕后 注意 coreseek 中的配置文件也是csft.conf 而不是 sphinx.conf cd /usr/local/coreseek/etc cp sphinx.conf.dist csft.conf vim csft.conf 有些配置改动如下其他配置内容如上文的sphinx.conf 在索引源中注释掉txt index main{ #stopwords = G:\data\stopwords.txt #wordforms =G:\data\wordforms.txt #exceptions =/data/exceptions.txt #charset_type = sbcs #添加下面2行 意思是把中文分词加入到配置文件中 char_type = zh_cn.utf-8 charset_dictpath =/usr/local/mmseg/etc/ #你安装mmseg的目录 } 保存配置 建立索引 cd /usr/local/coreseek/bin ./indexer --all ./search 中文词缀 如何用php去使用sphinx Sphinx集成到php程序中有两种方式 1.Sphinx php 模块(这次我们选择使用的方式) 2.Sphinx api 类(位于coreseek源码包里的csft里的api文件夹里有一个sphinxapi.php,使用的时候包含这个php文件即可) 我们要使用sphinx需要做以下几件事: 1.首先要有数据 2.建立sphinx配置文件 3.生成索引 4,启动searchd 服务进程,并开启端口9312 5.用php客户程序去链接sphinx服务 /usr/local/coreseek/bin/searchd 启动进程命令 searchd -c 指定配置文件 --stop 停止服务 --pidfile 显示指定pid文件 -p 指定端口(默认9312) 注意:这里启动的服务是searchd 使用php sphinx的模块 下载 sphinx-1.1.0.tgz tar zvxf sphinx-1.1.0.tgz cd sphinx-1.1.0 /usr/local/php/bin/phpize #用于生成一个configure的脚本 进入coreseek源码包的csft/api/libsphinxclent 目录下执行configure ./configure make && make install 进入sphinx-1.1.0.gzt的源码包目录下 执行configure用于生成so 的shpinx模块 ./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-sphinx make && make install 安装成功后会有提示 Build complete. Don't forget to run 'make test'. Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/ (这个目录是sphinx.so所在的目录) 然后我们编辑php的ini文件 在extension中加入 extension=sphinx.so 然后重启nginx和php的服务 最后打印一下phpinfo 查看sphinx是否开启成功 如果成功开启 就可以使用php手册里的sphinx的方法和代码了

 

2022年电赛E题声源定位跟踪系统 电赛声源定位 阅读详情

相关推荐

SEG-Y 数据介绍及读写

1万+

openwrt编译curl及错误解决方案

目前的openwrt trunk版本并未找到curl的身影,可通过如下步骤将curl加入openwrt系统源码. 1.将https://dev.openwrt.org/browser/packages/libs?rev=22322&order=name中curl目录下载至 openwrt源码根目录对应的 package/libs/curl下 2.在openwrt源码根目录下执行make

Devin Zhou 6739

ALLEGRO 3D STEP.zip

ALLEGRO 3D STEP文件资源 104M

sphinx安装配置和中文分词包coreseek

sphinx在此处下载:

无效的博客 1万+

CoreSeek 安装问题解决及使用

Coreseek 安装报错 coreseek 使用: 自定义Coreseek词库 词库格式如下: 词\t词频率(非单字词为1) x:1 保存为unigram.txt文件 运行命令bin/mmseg -u etc/unigram.txt生成词库uni.lib 检查分词效果命令 bin/mmseg -d etc/  data.txt>result.txt  data

wdc-hui的备忘录 614

coreseek索引更新机制

<br />coreseek索引更新机制<br />版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明<br />http://fatal.blogbus.com/logs/45153968.html<br /> <br />= =,昨晚太晚睡觉,所以日记又没写。结果现在又不太记得昨天做了啥了。<br />还是先说今天吧。<br />今天的时间都花在coreseek的索引更新机制上了,原来是每隔一分钟更新增量索引,每天再重建一次索引。sph_counter 中存放区分主索引和增量索引的maxi

时间总是在不经意间悄悄的走过 3430

Linux环境变量和(export,echo的使用

Shell 的变量,可以分为 “环境变量” 和 “自定义变量” 两种类型,两者的区别在于作用范围不同。环境变量可以在其进程的子进程中继续有效,而自定义变量的势力范围则无法延伸到其进程的子进程中。 env:显示当前用户的环境变量,但不会显示其自定义变量。 export:功能同 env 一样,也是显示当前用户的环境变量,只不过该命令的输出是按变量名进行排序的。 declare:显示当前 Shell 中定义的所有变量,包括用户的环境变量和自定义变量,该命令的输出按变量名进行排序。 set:功能同 declare

han_hhh的博客 7288

sphinx,coreseek安装

sphinx是国外的一款搜索软件。 coreseek是在sphinx的基础上,增加了中文分词功能,换句话说,就是支持了中文。 Coreseek发布了3.2.14版本和4.1版本,其中的3.2.14版本是2010年发布的,它是基于Sphinx0.9.9搜索引擎的。而4.1版本是2011年发布的,它是基于Sphinx2.0.2的。Sphinx从0.9.9到2.0.2还是有改变了很多的,有很

罗罗罗罗罗罗健 359

Sphinx/Coreseek简介&安装使用

Sphinx/Coreseek简介&安装使用 Sphinx/Coreseek简介       在数据库使用模糊匹配的时候,在数据量少的情况下,使用like '%keywork%'可以解决,但是在数据量大的情况下,查询时间就变得难以忍受了。尤其是访问量大的时候,仅仅靠mysql已经无法支撑业务。Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索

zhibin的程序日记 892

基于Sphinx的中文全文检索引擎Coreseek安装

按照Sphinx来进行全文检索,默认只支持按字拆分,如果要实现比较好的中文分词,可以使用基于libmmseg的引擎Coreseek。 yum install g++yum install gccyum install makeyum install mysql mysql-devel php-mysql qt4-mysql wget  http://www.corese

蒋宇捷的专栏 2071

Centos下基于sphinx的开源搜索引擎coreseek安装sphinx常见报错及解决办法

coreseek是一款基于sphinx开源的搜索引擎,因为sphinx只支持英文和俄文(即只能进行英文分词和俄文分词),所以如果要使用sphinx做中文搜索的话,需要自己独立去导入中文词库。而coreseek里集成了中文词库模块mmseg,所以直接使用coreseek会方便很多。Coreseek目前的最新版是coreseek4.1版本,2011年发布的,是基于Sphinx2.0.2的,早先有一个版本coreseek3.2.14版,2010年发布的,其中的Sphinx是0.9.9版。

本博客记录了从2014年以来在工作学习中遇到的技术问题、解决方法以及部分个人人生经历、经验等内容。 1511

coreseek/sphinx CentOS6.4下安装

coreseek/sphinx CentOS6.4下安装 一、在CentOS6.4下安装coreseek之前需要预先安装以下软件 1.打开终端 输入 su 获取管理员权限 2.输入命令 yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat

walle的博客 785

CentOS6.2 安装Coreseek(Sphinx)详细教程

Sphinx是一个基于SQL的全文检索引擎,可以结合mysql,postgresql做全文搜索,它可以提供比数据库本身更专业的搜索功能,但对中文检索并不友好。而coreseek就是基于sphinx针对中文搜索研发出来的软件, 适用于行业/垂直搜索、论坛/站内搜索、数据库搜索、文档/文献检索、信息检索、数据挖掘等应用场景。http://blog.rekfan.com/?p=136 Coreseek

sujianxin2012的专栏 1201

Sphinx/Coreseek安装

Sphinx/Coreseek简介¶ Sphinx是一个高性能的全文检索引擎,使用C++语言开发,采用GPL协议发布,可购买商业授权,目前的稳定版本是2.1.7。 Coreseek是基于Sphinx的中文全文检索引擎,使用MMSEG算法进行中文分词,并且提供Python数据源。Coreseek采用GPLv2协议发布,可购买商业授权,目前的稳定版本是3.2.14,基于Sphinx-0.9

php 工厂 517

linux php安装扩展

以安置php-mysql扩展为例 pdo_mysql在php源码包内默认存在 进入php源码包的ext/pdo_mysql目录 或者下载解压后进入目录 wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz 运行php自带脚本生成confiure /usr/local/php/bin/phpize 前面的/usr/local/

sinat_16493273的博客 559

Linux php配置redis扩展 Centos

下载PHP Redis扩展安装包 地址:http://pecl.php.net/package/redis 上传 redis-3.1.1.tgz 到/usr/local/src目录 解压 # tar zxvf redis-3.1.1.tgz 进入目录, 开始编译php扩展 # cd redis-3.1.1 # phpize 配置环境注意路径 这里配置的时候一定要找到正确的php-config的位置,同样可用whereis php-config获取位置 # ./configur...

rilqa的博客 249

SphinxCoreseekSphinx-for-chinaese、Sphinx+Scws 评测

http://www.wubiao.info/292 Sphinx是一个基于SQL的全文检索引擎;普遍使用于很多网站;但由于中英文的差异,其本身,对中文的支持并不好。 主要体现在对一段话断词;英文只需按照空格对其分词即可;但对于博大精深的中文来说,却是件困难的事情。 分词在两个地方会用到; 1、索引时,根据分词索引原始数据 2、搜索时,对用户输入分词,到索引中查询 本文提供了三种目

阳光梦的专栏 2894

安装swoole的步骤

安装swoole的步骤 注:这是Linux系统下的swoole安装方法,别的操作系统可能存在差别。 步骤 通过cd正确进入swoole-src-4.4.15目录(可以在这里https://github.com/swoole/swoole-src/releases下载swoole源码)。 输入phpize(或者类似/opt/php/bin/phpize的完整路径,如果拥有多个PHP版本或者phpi...

庵中十三居士的博客 323

源码安装zabbix3.2.7时PHP ldap Warning

问题如下: 解决方法: 1、首先查看源码安装php模块中是否有ldap.so [root@nms ldap]# ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/total 1576-rwxr-xr-x 1 root root 129484 Aug 22 10:18 ldap.so ...

weixin_30567225的博客 414
上一篇: C# continue,break,return 跳转语句的用法
下一篇: Linux内核学习笔记五——中断推后处理机制
weixin_34081595
博客等级 码龄11年 8430粉丝 721原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值