coreseek mysql.sock_coreseek+lnmp实现站内全文检索
coreseek安装与简单实用
安装环境
系统环境
centos7.2
1核2G
软件环境
coreseek-3.2.14
安装mmseg
更新依赖包和安装编译环境
yum -y install m4 autoconf automake libtool
yum -y install gcc gcc-c++ wget
yum -y install mysql-devel
安装coreseek
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
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
make
make install
在安装csft的过程中出现了三种错误情况,错误情况如下错误记录,可以参考修改即可
配置coreseek配置文件
配置文件主要修改的几个地方如下,具体的修改信息请参见 coreseek配置文件 目录的进行配置
source src1
{
type = mysql #数据库类型
sql_host = localhost # MySQL主机IP
sql_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-8
charset_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 avg
total 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 sec
displaying matches:
1. document=3, weight=1
2. document=4, weight=1
3. document=5, weight=1
words:
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 9312
tcp 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 1
make[2]: Leaving directory `/home/zyf/zyfwork/csft3.1b3/src’
make[1]: *** [all] Error 2
make[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: undefined
reference to `libiconv’
libsphinx.a(sphinx.o)(.text+0x53a28):/usr/local/sphinx/src/sphinx.cpp:15581: undefined
reference to `libiconv_close’
collect2: ld returned 1 exit status
make[2]: * [indexer] Error 1
make[2]: Leaving directory `/usr/local/sphinx/src’
make[1]: * [all] Error 2
make[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即可.其余文件可以不管.
执行程序说明
进入执行程序目录可以看到如下几个文件,具体参考请见sphinx文档
-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 // 测试数据库
coreseek mysql.sock_coreseek+lnmp实现站内全文检索相关推荐
- 基于Lucene/XML的站内全文检索解决方案:WebLucene 【转】
原文地址:http://www.chedong.com/tech/weblucene.html 内容摘要: 为Lucene做一个通用XML接口一直是我最大的心愿:更方便的在WEB应用中嵌入全文检索功能 ...
- coreseek mysql.sock_Coreseek + Sphinx + Mysql + PHP构建中文检索引擎
安装前首先安装依赖的软件包 yuminstall make gcc g++ gcc-c++ libtool autoconf automake imake libxml2-devel expat-d ...
- java实现站内搜索
1.站内搜索 在以往的网站建设,企业系统的搭建过程中,因为信息比较简单,比较少,站内搜索可能不是必要的选项,而今,时代的发展, 信息量的增大,网站逻辑的复杂,企业自身对信息架构.管理.发布的需求,以及 ...
- 站内搜索应用的方案设计的分析和总结
http://www.poluoluo.com/jzxy/200907/63759.html 我为银杏泰克站内搜索服务商做产品顾问期间,经手了十几个站点的站内搜索应用的方案设计,略作一些分析和总结. ...
- 用全文检索构建站内搜索和大数据搜索引擎
全文检索首先对要搜索的文档进行分词,然后形成索引,通过查询索引来查询文档.全文检索是目前搜索引擎,大数据搜索的关键技术.全文检索系统可实现亚秒级的检索速度以及每秒上百次的并发检索支持. 需求: 实现淘 ...
- 站内搜索引擎初探:haystack全文检索,whoosh搜索引擎,jieba中文分词
在做django项目当中,不免要使用到站内搜索引擎,网站呈现的内容除了列表,详细页,首页之外,用户也需要通过搜索引擎来找到自己需要的内容. 安装: pip install django-haystac ...
- mysql群发消息_百万级用户量的站内信群发数据库设计
随着WEB2.0的发展,用户之间的信息交互也变得十分庞大,而且实时性要求越来越高.现在很多SNS网站和一部分CMS网站都广泛地应用了站内信这一模块,这个看似简单的东西其实背后隐藏着很多需要设计师重视的 ...
- mysql群发消息_分享网站群发站内信数据库表设计
本文和大家分享一下网站站内信实现表设计的功能.需要的朋友可以参考下. "站内信"不同于电子邮件,电子邮件通过专门的邮件服务器发送.保存.而"站内信"是系统内的消 ...
- [转]测试淘宝站内的搜索系统
如果让你来测试淘宝站内的搜索系统,请问你能想到哪些方法来测试? 参考:http://bbs.51testing.com/thread-499381-1-1.html 1.功能方面,是否能按指定条件查到 ...
- 测试淘宝站内的搜索系统
如果让你来测试淘宝站内的搜索系统,请问你能想到哪些方法来测试? 参考:http://bbs.51testing.com/thread-499381-1-1.html 1.功能方面,是否能按指定条件查到 ...
最新文章
- Weex快速上手教程(Weex Tutorial)
- 冬眠动物克服肌肉萎缩,靠的居然是“肠子”|Science
- Dockerfile指令详解:ONBUILD 为他人作嫁衣裳
- 一行SQL代码能做什么?
- C# 发出异步的Get请求
- LeetCode 1151. 最少交换次数来组合所有的 1(滑动窗口)
- 数据结构与算法 —— 基础一(排列组合)
- java实验报告2013_java实验报告4
- 酒店管理系统-概要设计说明书
- 自学指南——零基础教你快速学习软件测试?
- 理解之软件需求说明书
- 【滤波器】最小均方(LMS)自适应滤波器
- 配置快速生成vue模板
- win10系统怎么查看电脑配置?
- 【测开实战】adb+python自动化刷快手/抖音视频来赚金币
- Spring、SpringMVC
- Privacy-Preserving Deep Learning via Additively Homomorphic Encryption
- 精进之路-day01
- Oracle新建的用户看不到表,oracle中用命令行新建的用户没法建表
- 计算机不能识别监控硬盘分区,MBR 分区电脑无法识别 3TB 及以上硬盘的原因!