博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lnmp+coreseek实现站内全文检索(安装篇)
阅读量:6906 次
发布时间:2019-06-27

本文共 7783 字,大约阅读时间需要 25 分钟。

  • 安装环境

  • 系统环境
    • centos7.2
    • 1核2G
  • 软件环境
    • coreseek-3.2.14

安装mmseg

  • 更新依赖包和安装编译环境
yum -y install m4 autoconf automake libtoolyum -y install gcc gcc-c++ wgetyum -y install mysql-devel

安装coreseek

tar -xzvf coreseek-3.2.14.tar.gzcd coreseek-3.2.14cd mmseg-3.2.14/./bootstrap./configure --prefix=/usr/local/mmseg3makemake installcd ../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=armmakemake install

<font color='red'>在安装csft的过程中出现了三种错误情况,错误情况如下错误记录,可以参考修改即可</font>

配置coreseek配置文件

配置文件主要修改的几个地方如下,具体的修改信息请参见 coreseek配置文件 目录的进行配置

source src1 {     type = mysql                                #数据库类型sql_host = localhost                    # MySQL主机IPsql_user = root                             # MySQL用户名sql_pass = 123                          # MySQL密码sql_db   =  test                        # MySQL数据库sql_port = 3306                     # MySQL端口sql_sock = /tmp/mysql.sock              #如果是linux下需要开启,指定sock文件sql_query_pre = SET NAMES UTF8      # MySQL检索编码sql_query_pre = SET SESSION query_cache_type=OFF    #关闭缓存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}                                           #这行不需要修改source srclthrottled:srcl               #继承主数据源主数据源索引:index text1{   source = src1                           #索引源声明charset_type = utf-8                #数据编码(设置成utf8)charset_table =                     #上面指定了utf-8,这里需要开启}增量索引index testlstemmed:test1        #先进行注释index distl                         #分布式也注释掉索引器设置indexer { mem_limit = 256M # 内存大小限制 默认是 32M, 推荐为 256M }                                       #其他用默认即可sphinx服务进程searchd的相关配置searchd {}                                       #全部用默认的就可以了

除了上述的配置项外还需要单独配置几项(如果你是安装的sphinx则进行上述配置即可,如果是coreseek则还需要配置下述内容)

index test1{#stopwords                      = G:\data\stopwords.txt#wordforms                      = G:\data\wordforms.txt#exceptions                         = /data/exceptions.txt#charset_type                       = sbcs添加下面这两行,意思是把中文分词加入到配置文件中charset_type        = zh_cn.utf-8charset_dictpath    = /usr/local/mmseg/etc/    #你安装mmseg的目录}

数据库操作

// 创建数据库create database test;// 创建数据表userinfo | CREATE TABLE `userinfo` (  `id` int(4) NOT NULL AUTO_INCREMENT,  `name` varchar(10) NOT NULL,  `age` int(3) NOT NULL,  `sex` enum('女','男') NOT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4// 插入数据INSERT INTO `userinfo` VALUES (1,'张三',12,'女'),(2,'李四',13,'男'),    (3,'小明',12,'女'),(4,'小红',13,'女'),(5,'小四',12,'女'),(6,'章泽天',13,'女');

创建索引数据(indexer)

// 第一次创建索引/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --all// 第二次创建所以(当我们第一次创建索引之后,对数据表做了新的操作再按照上面的方式生成索引是会多增加一个参数)/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf  -rotate option

如果上述的操作执行正确,则会提示如下信息

Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)]Copyright (c) 2007-2011,Beijing Choice Software Technologies Inc (http://www.coreseek.com) using config file '/usr/local/coreseek/etc/csft.conf'...WARNING: no such index '-rotate', skipping.WARNING: no such index 'option', skipping.total 0 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avgtotal 0 writes, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg

测试索引数据(search)

/usr/local/coreseek/bin/search '小'

正常情况下会出现下述信息

Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)]Copyright (c) 2007-2011,Beijing Choice Software Technologies Inc (http://www.coreseek.com) using config file '/usr/local/coreseek/etc/csft.conf'...index 'test1': query '小 ': returned 3 matches of 3 total in 0.004 secdisplaying matches:1. document=3, weight=12. document=4, weight=13. document=5, weight=1words:1. '小': 3 documents, 3 hits

启动searchd服务

该服务是可以在/usr/local/coreseek/etc/csft.conf文件中的searchd配置项中配置,默认服务的端口已经配置,可以不单独做配置

// 启动服务/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf// 检测服务启动情况[root@test ~]# netstat -anp | grep 9312tcp        0      0 0.0.0.0:9312            0.0.0.0:*               LISTEN      31672/searchd

创建测试代码

测试代码可以参见分享文件中的 测试代码 目录

require './api/sphinxapi.php';$sphinx = new SphinxClient();$sphinx->SetServer('127.0.0.1', 9312);$sphinx->SetArrayResult(true);$sphinx->SetMatchMode(SPH_MATCH_ALL);$sphinx->SetSortMode(SPH_SORT_RELEVANCE);$result = $sphinx->query('小', '*');var_dump($result);

查询出的结果如下

array(10) {  ["error"]=>  string(0) ""  ["warning"]=>  string(0) ""  ["status"]=>  int(0)  ["fields"]=>  array(3) {    [0]=>    string(4) "name"    [1]=>    string(3) "age"    [2]=>    string(3) "sex"  }  ["attrs"]=>  array(0) {  }  ["matches"]=>  array(3) {    [0]=>    array(3) {      ["id"]=>      int(2)      ["weight"]=>      string(1) "1"      ["attrs"]=>      array(0) {      }    }    [1]=>    array(3) {      ["id"]=>      int(3)      ["weight"]=>      string(1) "1"      ["attrs"]=>      array(0) {      }    }    [2]=>    array(3) {      ["id"]=>      int(4)      ["weight"]=>      string(1) "1"      ["attrs"]=>      array(0) {      }    }  }  ["total"]=>  string(1) "3"  ["total_found"]=>  string(1) "3"  ["time"]=>  string(5) "0.003"  ["words"]=>  array(1) {    ["小"]=>    array(2) {      ["docs"]=>      string(1) "3"      ["hits"]=>      string(1) "3"    }  }}

coreseek错误记录

安装coerseek问题一

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  #然后将所有的T val = ExprEval ( this->m_pArg, tMatch ).....修改为T val =this->ExprEval ( this->m_pArg, tMatch ),共有三处。

安装coreseek错误二

make[2]: *** [tokenizer_zhcn.o] Error 1make[2]: Leaving directory `/home/zyf/zyfwork/csft3.1b3/src’make[1]: *** [all] Error 2make[1]: Leaving directory `/home/zyf/zyfwork/csft3.1b3/src’make: *** [all-recursive] Error 1/usr/local/sphinx/src/sphinx.cpp:15557: undefined reference to `libiconv_open’libsphinx.a(sphinx.o)(.text+0x53a01):/usr/local/sphinx/src/sphinx.cpp:15575: undefinedreference to `libiconv’libsphinx.a(sphinx.o)(.text+0x53a28):/usr/local/sphinx/src/sphinx.cpp:15581: undefinedreference to `libiconv_close’collect2: ld returned 1 exit statusmake[2]: * [indexer] Error 1make[2]: Leaving directory `/usr/local/sphinx/src’make[1]: * [all] Error 2make[1]: Leaving directory `/usr/local/sphinx/src’make: * [all-recursive] Error 1修改 configure 文件把 #define USE_LIBICONV 0 最后的数值由1改为0

安装coreseek问题三

db_interface_mysql.h:32:25: 致命错误:mysql/mysql.h:没有那个文件或目录// ubuntu系统解决方案sudo apt-get install libmysqlclient-dev// centos7解决方案sudo yum install mysql-devel

参考链接

coreseek额外说明

安装路径

/usr/local/coreseek

配置目录

/usr/local/coreseek/etc/

执行程序目录

/usr/local/coreseek/bin/

配置文件说明

进入配置目录,你会找到如下几个文件

-rw-r--r--. 1 root root   905 10月 13 21:27 example.sql-rw-r--r--. 1 root root 18954 10月 13 21:27 sphinx.conf.dist-rw-r--r--. 1 root root   956 10月 13 21:27 sphinx-min.conf.dist

将sphinx.conf.dist文件复制一份名为csft.conf即可.其余文件可以不管.

执行程序说明

进入执行程序目录可以看到如下几个文件,具体参考请见

-rwxr-xr-x. 1 root root 7032560 10月 13 21:27 indexer // 生成索引程序-rwxr-xr-x. 1 root root 6650552 10月 13 21:27 indextool // 调试程序-rwxr-xr-x. 1 root root 6740544 10月 13 21:27 search  // 搜索程序-rwxr-xr-x. 1 root root 7970448 10月 13 21:27 searchd  // 提供客户端查询索引服务-rwxr-xr-x. 1 root root 6370256 10月 13 21:27 spelldump // 提取字典内容

分享文件目录说明

├── api.zip // coreseek类文件(该文件和测试代码目录下的api.zip是一样的)├── coreseek-3.2.14.tar.gz // coreseek安装程序文件├── coreseek配置文件 │   └── csft.conf // 上述 配置coreseek配置文件 步骤中提交到的配置文件├── 测试代码 │   ├── api.zip│   └── index.php // 测试代码└── 测试数据库    └── test.sql // 测试数据库

转载于:https://blog.51cto.com/10992108/2304873

你可能感兴趣的文章
HTML互动视频教程
查看>>
深入浅出Future Pattern
查看>>
微信公众平台企业号回调模式的URL验证
查看>>
平台常用函数介绍
查看>>
公司讲座
查看>>
惆怅,诸事不顺
查看>>
Lambda架构与推荐在电商网站实践
查看>>
Docker Swarm与Apache Mesos的区别
查看>>
消息中间件保证消息一致性解决方案
查看>>
java内嵌浏览器DJNativeSwing
查看>>
Php学习
查看>>
寓意很深刻的故事
查看>>
Confluence 6 权限概述
查看>>
Android小白的探索:2D绘图之Android简易版Microsoft Visio学习之路 三、装饰者模式...
查看>>
现代操作系统--引论
查看>>
Unix Study之--AIX安装和配置SSH
查看>>
C++ priority_queue用法(大顶堆,小顶堆)
查看>>
带返回值的python多级菜单
查看>>
Linux中~/.是什么意思
查看>>
MySql-Binlog协议详解-流程篇
查看>>