Sphinx+MySQL5.1x+SphinxSE+mmseg


一.不停止mysql的情况下安装SphinxSE

1.确定mysql版本,下载对应源码包

此处下载5.1.69的mysql源码包

#wget ftp://ftp.ntu.edu.tw/pub/MySQL/Downloads/MySQL-5.1/mysql-5.1.69.tar.gz 

解压


2.下载sphinx:

#wget http://sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz 

解压


3.拷贝mysqlse到mysql5.1.69下的storage/sphinx

#cp -r sphinx-0.9.9/mysqlse/ mysql-5.1.69/storage/sphinx


4.编译

#cd mysql-5.1.69

#sh BUILD/autorun.sh

#./configure

#make


5.mysql插入sphinx引擎

#cd ./mysql-5.1.69

#cd ./storage/sphinx/.libs

#cp ha_sphinx.* /usr/lib64/mysql/plugin


更改所有者

#chown mysql.mysql /usr/lib64/mysql/plugin/*


登录mysql,插入引擎

#mysql -u root -p -h localhost 

#mysql> INSTALL PLUGIN sphinx SONAME 'ha_sphinx.so';


检查引擎是否安装

#mysql> show engines;


如果出现sphinx引擎,则表明已正常安装


二.安装Coreseek,使其支持中文索引及检索

1.安装autoconf


2.下载coreseek3.2.14.tar.gz,并解压缩


3.安装mmseg分词

#cd coreseek-3.2.14

#./bootstrap

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

#make

#make install


4.安装csft

#cd ../csft-3.2.14/

#sh buildconf.sh

#./configure --prefix=/usr/local/coreseek  --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql


===========================================================

##如果出现错误提示:“ERROR: cannot find MySQL include files.......To disable MySQL support, use --without-mysql option.“,可按照如下方法处理:

##请找到头文件mysql.h所在的目录,一般是/usr/local/mysql/include,请替换为实际的

##请找到库文件libmysqlclient.a所在的目录,一般是/usr/local/mysql/lib,请替换为实际的

##configure参数加上:--with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=/usr/local/mysql/lib,执行后,重新编译安装

============================================================


#make

#make install


三.配置并测试

1.进入coreseek目录

#cd /usr/local/coreseek/etc

#ls

可以看到三个文件

example.sql  sphinx.conf.dist  sphinx-min.conf.dist


#cp sphinx.conf.dist sphinx.conf


2.配置sphinx.conf

source src1

{


     type                   = mysql


     sql_host               = localhost


     sql_user               = root


     sql_pass               = 123456


     sql_db                 = test


     sql_port               = 3306   # optional, default is 3306


     sql_sock                              = /var/lib/mysql/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


     sql_attr_uint          = group_id


     sql_attr_timestamp     = date_added


     sql_query_info              = SELECT * FROM documents WHERE id=$id


}


index test1


{


     source                      = src1


     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


}



3.创建test数据库,并建立表documents,sql语句如下


DROP TABLE IF EXISTS test.documents;


CREATE TABLE test.documents

(

        id                      INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT,

        group_id        INTEGER NOT NULL,

        group_id2       INTEGER NOT NULL,

        date_added      DATETIME NOT NULL,

        title           VARCHAR(255) NOT NULL,

        content         TEXT NOT NULL

);


REPLACE INTO test.documents ( id, group_id, group_id2, date_added, title, content ) VALUES

        ( 1, 1, 5, NOW(), 'test one', 'this is my test document number one. also checking search within phrases.' ),

        ( 2, 1, 6, NOW(), 'test two', 'this is my test document number two' ),

        ( 3, 2, 7, NOW(), 'another doc', 'this is another group' ),

        ( 4, 2, 8, NOW(), 'doc number four', 'this is to test groups' );


DROP TABLE IF EXISTS test.tags;


CREATE TABLE test.tags

(

        docid INTEGER NOT NULL,

        tagid INTEGER NOT NULL,

        UNIQUE(docid,tagid)

);


INSERT INTO test.tags VALUES

        (1,1), (1,3), (1,5), (1,7),

        (2,6), (2,4), (2,2),

        (3,15),

        (4,7), (4,40);



4.生成索引

#/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf --all

其中参数--all表示生成所有索引


当然也可以是索引的名字例如:#/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf test1

执行后可以在/usr/local/coreseek/var/data目录中看到多出一些文件,是以索引名为文件名的不同的扩展名的文件


在不启动sphinx的情况下即可测试命令:


#/usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/sphinx.conf number

 

#/usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/sphinx.conf number --filter group_id 2


限定group_id 为2 返回一条记录


我们插入几条数据来测试中文

set names utf8  之前一定要设置字符集


INSERT INTO `test`.`documents` (


`id` ,


`group_id` ,


`group_id2` ,


`date_added` ,


`title` ,


`content`


)


VALUES (


NULL , '2', '3', '2011-02-01 00:37:12', '研究生的故事', '研究生自主创业'


), (


NULL , '1', '1', '2011-01-28 00:38:22', '研究', '为了创业而研究生命科学'


);


插入数据后需要重新索引

#/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf test1


进行测试

#/usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/sphinx.conf 研究生创业




四.实际使用

1.作为守护进程启动

#/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/sphinx.conf


2.建立一个sphinx引擎的表

CREATE TABLE t1


(


    id          INTEGER UNSIGNED NOT NULL,


    weight      INTEGER NOT NULL,


    query       VARCHAR(3072) NOT NULL,


    group_id    INTEGER,


    INDEX(query)


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


搜索表前三列的类型必须是INTEGER,INTEGER和VARCHAR,这三列分别对应文档ID,匹配权值和搜索查询。查询列必须被索引,其他列必须无索引。列的名字会被忽略,所以可以任意命名,参数CONNECTION来指定用这个表搜索时的默认搜索主机、端口号和索引,语法格式:CONNECTION="sphinx://HOST:PORT/INDEXNAME"。


执行SQL语句 select d.id,d.title,d.content from t1 join documents as d on t1.id = d.id and t1.query = '研究生创业';


即可查询结果


3.在不停止searchd的情况下主索引

插入数据后创建主索引

#/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf test1 --rotate


对于实际应用,应该是主索引+增量索引





转载于:https://www.cnblogs.com/itfenqing/p/4429417.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547260.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python3实现从txt文件中读取指定行的方法

Python3实现从txt文件中读取指定行的方法 本文实例讲述了Python3实现从文件中读取指定行的方法。分享给大家供大家参考。具体实现方法如下&#xff1a;def getline(the_file_path, line_number):if line_number < 1:return for cur_line_number, line in enumerate(open(the…

tls握手浅析

首先上图&#xff1a; tcp三次握手完毕 tls&#xff1a; 1、client hello client random 支持的tls 支持的算法 2、server hello server random 选择的tls协议 选择的算法 证书 公钥 3、client 公&#x1f511;加密后的。 premaster secret server 私钥解密得到 premas…

第二题:坦克游戏1.0(方法:动态规划)

stO 在此给某位靠打01背包处理射程并AC的大神跪了 Orz 问题描述&#xff1a; henry公司最近推出了一款新的坦克游戏。在游戏中&#xff0c;你将操纵一辆坦克&#xff0c;在一个NM的区域中完成一项任务。在此的区域中&#xff0c; 将会有许多可攻击的目标&…

ip、子网掩码、网络地址、广播地址、主机数公式

了解ip地址组成 IP地址&#xff1a;4段十进制&#xff0c;共32位二进制&#xff0c;如&#xff1a;192.168.1.1 二进制就是&#xff1a;11000000&#xff5c;10101000&#xff5c;00000001&#xff5c;00000001 子网掩码可以看出有多少位是网络号&#xff0c;有多少位是主机号…

linux 使用systemctl 设置java进程开机启动,管理springboot开机进程

该过程默认已经安装jdk。java程序启动方式有多重&#xff0c;列出如下几种。 1、java -jar demo.jar 使用该命令程序在控制台输出启动&#xff0c;当按下CtrlC和关闭终端时&#xff0c;程序会终止。输出日志&#xff0c;在后面加上 > 文件名&#xff0c;如&#xff1a;java…

golang开发环境配置及Beego框架安装

配置环境&#xff1a;Windows7推荐IDE&#xff1a;LiteIDEGO下载地址&#xff1a;http://www.golangtc.com/downloadBeego开发文档地址&#xff1a;http://beego.me/docs/intro/ 安装步骤&#xff1a; 一、GO环境安装 二、配置系统变量 三、Beego安装 一、GO环境安装 根据上…

svn迁移到git

步骤命令如下&#xff1a; > git svn clone https://svn-url/ProjectName --no-metadata --authors-fileuser.txt --trunk/ --tagstags --branchesbranches --ignore-refsrefs/remotes/ProjectName-.* > cd ProjectName> git remote rm origin> git remote add or…

Apache基础安装(一)

一、下载安装软件包安装[rooteric6 home]# mkdir -p /home/tools[rooteric6 tools]# wget http:#mirror.esocc.com/apache/httpd/httpd-2.2.25.tar.gz[rooteric6 tools]# tar -zxvf httpd-2.2.25.tar.gz[rooteric6 tools]# cd httpd-2.2.25[rooteric6 httpd-2.2.25]# ./configu…

Supervisor管理springboot应用进程

目录 概述环境准备spring boot应用supervisor配置启动应用 概述 前面博文介绍了Supervisor进程管理,实际应用可以对springboot应用进行管理,如果springboot应用挂掉,Supervisor还可以对它进行自动重启. 点击查看进程管理利器Supervisor--入门简介 点击查看进程管理利器Supervi…

yolo 视频场景行为数据集

1 HOLLYWOOD2 https://www.di.ens.fr/~laptev/actions/hollywood2/ 动作样本&#xff08;15Gb&#xff09; | 场景样本&#xff08;25Gb&#xff09; 包含了 12 个动作类别和 10个场景共3669个样本&#xff0c;所有样本均是从69部 Hollywood 电影中抽取出来的。视频样 2 IXM…

JS只能输入数字,数字和字母等的正则表达式

1.只能输入英文  <input type"text" οnkeyup"valuevalue.replace(/[^a-zA-Z]/g,)"> 2.只能输入中文、英文、数字、符号和.符号 <input type"text" οnkeyup"valuevalue.replace(/[^a-za-z0-9u4e00-u9fa5.]/g,)"> 3.只能…

iOS 文件和数据管理 (可能会删除本地文件储存)

转自&#xff1a;http://www.apple.com.cn/developer/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/FilesandNetworking/FilesandNetworking.html 文件和数据管理 iPhone OS系统上的文件和用户的媒体数据及个人文件共享闪存上的空间。出于安全的目…

对称加密1

<?php /*** client* rsa aes md5签名*/ $serect 范英刚; $appkey 1248995523; //url $url "127.0.0.1?"; //参数 $params array(); $params[appkey] $appkey; $params[name] shiyi; $params[password] fyg666666; $params[time] time(); //http请求参…

Opencv 深度学习识别性别和检测年龄

目录 1基于CNN的性别分类建模原理 1.1 人脸识别 1.2 性别预测 1.3 年龄预测 1.4 结果 2 代码 参考 本教程中&#xff0c;我们将讨论应用于面部的深层学习的有趣应用。我们将估计年龄&#xff0c;并从单个图像中找出该人的性别。模型由GilLevi和TalHassner训练&#xff0…

Golang类型转换

类型转换 1、int转string strconv.Itoa(i)2、string转int i, err strconv.Atoi(s) 或者 i, err ParseInt(s, 10, 0) 3、string转float f, err ParseFloat(s, 32) 4、用户结构类型转换 userinfo : this.GetSession("userinfo")if userinfo nil {return}user : …

include和require区别

很多时候需要函数重用&#xff0c;引用其他文件中的函数。这时候就用到了以下几种方式。 include和require的区别&#xff1a; includerequire引用时在使用时候加载在初始时加载异常如果加载的文件不存在会报出一个警告程序继续运行加载的文件不存在会报出一个致命的错误 使用…

Ubuntu设置国内阿里云镜像源,加速apt-get下载速度

在VM虚拟机中安装了Ubuntu16.04LTS系统&#xff0c;通过apt或apt-get命令安装包&#xff0c;下载速度很慢&#xff0c;因为系统自带的下载源的服务器在国外。可以将下载源切换为国内的镜像源&#xff0c;比如说阿里云镜像&#xff0c;https://developer.aliyun.com/mirror/ubun…

结构体和联合体

结构体&#xff1a; 8个为一个内存地址 依次向下 联合体&#xff1a; 共用一块内存地址 调试可以gcc -g -o输出编译。然后gdb执行 d打断点。n下一行。p输出。查看每一个所占的内存地址 宏定义和使用 #define 宏名称 “实现什么东西” 大小端 可以自行判断自己电脑 摘自…

PowerDesigner导出Report通用报表

PowerDesigner导出Report通用报表 通用模板下载地址&#xff1a;http://pan.baidu.com/s/1c0NDphm

Log4j的应用实例

建一张表&#xff0c;如下&#xff1a; create table log4j( logId int not null auto_increment,--流水号 createDate varchar(45) default null,--日志生成时间 thread varchar(45) default null,--当前线程 level varchar(45) default null,--当前日志的级别 …