CoreSeek详细入门教程
centos6操作系统
Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索、论坛/站内搜索、数据库搜索、文档/文献检索、信息检索、数据挖掘等应用场景,用户可以免费下载使用。
coreseek安装需要预装的软件:
yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel
cd /usr/local/src
wget http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
tar -xzvf coreseek-3.2.14.tar.gz
cd coreseek-3.2.14##安装mmseg
cd mmseg-3.2.14
./bootstrap #输出的warning信息可以忽略,如果出现error则需要解决
./configure --prefix=/usr/local/mmseg3
make && make install
cd ..
## 安装完成后,mmseg使用的词典和配置文件将自动安装到/usr/local/mmseg3/etc中##安装coreseek
cd csft-3.2.14
sh buildconf.sh #输出的warning信息可以忽略,如果出现error则需要解决
./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 ##如果提示mysql问题,可以查看MySQL数据源安装说明
make && make install
cd ..cd /usr/local/coreseek/etc
cp sphinx-min.conf.dist sphinx.conf
vi sphinx.conf
内容示例如下(localhost,DB_USER,DB_PASSWORD,DB_NAME自行修改)
#
# Minimal Sphinx configuration sample (clean, simple, functional)
#source content
{type = mysqlsql_host = localhostsql_user = DB_USERsql_pass = DB_PASSWORDsql_db = DB_NAMEsql_port = 3306 # optional, default is 3306sql_query_pre = SET NAMES utf8sql_query = \SELECT id, title, pub_time, group_id, content FROM contents where status = '1'sql_attr_uint = group_idsql_attr_timestamp = pub_timesql_query_info = SELECT * FROM contents WHERE id=$id
}
index content
{source = contentpath = /usr/local/coreseek/var/data/contentdocinfo = externcharset_dictpath = /usr/local/mmseg3/etc/charset_type = zh_cn.utf-8ngram_len = 0
}
indexer
{mem_limit = 32M
}searchd
{port = 9312log = /usr/local/coreseek/var/log/searchd.logquery_log = /usr/local/coreseek/var/log/query.logread_timeout = 5max_children = 30pid_file = /usr/local/coreseek/var/log/searchd.pidmax_matches = 1000seamless_rotate = 1preopen_indexes = 1unlink_old = 1
}
然后根据以上配置建立索引文件
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf --all --rotate
启动命令
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/sphinx.conf
然后在coreseek目录下,新建3个sh脚本,以便操作
停止服务stop.sh
#!/bin/bash
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/sphinx.conf --stop
建立索引build.sh
#!/bin/bash
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf --all --rotate
启动服务start.sh
#!/bin/bash
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/sphinx.conf
添加可执行权限
chmod +x start.sh
chmod +x stop.sh
chmod +x build.sh
运行start.sh后,使用crontab定时执行build.sh,就可更新索引。(注:因为数据量小且更新不算很频繁,未使用增量索引,只是定时重建主索引,新版本CoreSeek全文搜索 4.1 支持实时索引)
crontab -e
0 2 * * * sh /usr/local/coreseek/build.sh >/dev/null 2>&1
每天凌晨2点重建一次索引,忽略日志输出。
在/usr/local/src/coreseek.3.2.14/csft-3.2.14/api目录下提供了PHP的接口文件 sphinxapi.php,这个文件包含一个SphinxClient的类,copy到自己的web目录下
通过如下方式进行搜索
$s_key = trim($s_key);
if(strpos($s_key,'\'') || strpos($s_key,'\"') || strpos($s_key,'\;')) {exit('非法字符');
}
require("sphinxapi.php");$page_nums = 20;
$offset_start = ($page_index-1)*$page_nums;
$offset_end = $offset_start + $page_nums;
$cl = new SphinxClient();
$cl->SetServer('localhost', 9312);
$cl->SetArrayResult(true);
$cl->SetMatchMode(SPH_MATCH_ALL);
$cl->SetLimits($offset_start,$offset_end);
$cl->SetSortMode(SPH_SORT_RELEVANCE);
$res = $cl->Query($s_key,"content");
安装包括两个部分,mmseg和csft
安装成功会在/usr/local文件夹下面出现coreseek文件夹
source bt
{
sql_pass = **** #如果密码里面有#号需要使用转意字符,否则连接不了数据库
sql_query_pre = SET NAMES utf8 #要根据你自己数据库的编码改变,比如如果编码是utf8mb4而编码写的是utf8 会出现没有搜索结果的问题
}
index bt
{
source = bt #这个地方的值要和前面配置的source名对应
}
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/sphinx.conf --stop 停止服务
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf --all --rotate 建立索引
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/sphinx.conf 开启服务
默认配置文件是csft.conf 如果配置文件是其他名字的话,需要-c 来制定配置文件路径
---------------
配置文件中
sql_query = xxxx
xxxx代表一个sql语句,sql语句select的第一个字段将被sphinx认作表的主键来进行索引,所以数据表的主键字段不是int类型也没有关系,选一个是int类型的字段排在select语句的第一个就行了,但是这个字段要保证唯一性,否则会导致搜索结果不完整,计算出来的值也可以被当做主键来进行索引 比如SELECT unix_timestamp(time),name, age .......unix_timestamp(time)是计算出来的,它排在第一个的时候,就会被sphinx当做表的主键来进行索引。
---------------------
CoreSeek详细入门教程相关推荐
- TypeScript超详细入门教程(上)
TypeScript超详细入门教程(上) 01 开篇词:Hello~TypeScript 01 开篇词:Hello~TypeScript 更新时间:2019-10-30 13:49:46 既然我已经踏 ...
- 543、RabbitMQ详细入门教程系列 -【Confirm与Mandatory】 2022.09.05
目录 一.前言概述 二.SpringAMQP配置Confirm 2.1 Connection设置 2.2 template设置 2.3 Confirm实现 三.SpringAMQP配置ManDator ...
- 544、RabbitMQ详细入门教程系列 -【手动消费确认】 2022.09.05
目录 一.前言概述 二.配置实现 2.1 XML配置 2.2 MessageListener实现 三.消息预取 四.并发消费 五.参考链接 一.前言概述 RabbitMQ(四) --消费者Consum ...
- 【endnote详细入门教程】
Endnote详细入门教程 一.下载引用,导入文献 二.在word中插入引用 三.文献分类.注释 四.预览.引用格式 一.下载引用,导入文献 1.可以从不同的文献下载网站进行导入: (1)web of ...
- Swig超详细入门教程(Java调用C/C++, CMake)——更新于2021.12
目录 相关教程 环境配置 0基础上手例子(C/C++) 使用CMake的例子(C语言) 使用CMake的例子(C++) 本文主要是手把手教萌新们如何用官方用例构建(有许多本人亲身踩坑血泪史) 相关教程 ...
- Apollo Control——超详细入门教程(二):连续状态空间方程离散化与离散LQR公式推导
专栏文章列表 Apollo Control--超详细入门教程(一):基于道路误差的车辆动力学模型 Apollo Control--超详细入门教程(二):连续状态空间方程离散化与离散LQR公式推导 Ap ...
- python画图颜色表示大小变化_python画图(线条颜色、大小、类型:点、虚线等)(图文详细入门教程四)...
初衷 本人由于平常写论文需要输出一些结果图,但是苦于在网上搜python画图时,详细的教程非常多,但是就是找不到能马上解决自己问题那一行代码,所以打算写一些适合需求简单的朋友应急用的教程,应急就必须方 ...
- MFC 最详细入门教程
From:https://blog.csdn.net/wang18323834864/article/details/78621633/ Visual Studio 2019:https://visu ...
- python画图marker显示_python画图(标记、marker、设置标记大小、marker符号大全)(图文详细入门教程五)...
初衷 本人由于平常写论文需要输出一些结果图,但是苦于在网上搜python画图时,详细的教程非常多,但是就是找不到能马上解决自己问题那一行代码,所以打算写一些适合需求简单的朋友应急用的教程,应急就必须方 ...
- canvas详细入门教程(1W字 吐血分享)
大家好,我是潘潘 今天为大家带来的是我已经写了很久了的canvas详细教程,对入门canvas很有帮助. 点击跳转原文: canvas详细教程原文 canvas是什么? 简单来说,<canvas ...
最新文章
- 别只顾着写代码,学会这 25 条比涨工资都重要,你信不?
- java 1.8 tar.gz_linux安装java1.8
- 使用eclipse编写JAVA程序
- Web-Lesson07-JS的函数及作用域
- Apache下如何禁止指定目录运行PHP脚本
- python lock_python lock一步步教你理解Python装饰器
- CF1338D:Nested Rubber Bands(树形dp)
- linux下amd超频工具,AMD锐龙自动超频工具ClockTuner for Ryzen
- 我想问一下男生,一个女生那么真诚热情又卑微的喜欢你,你们是怎么做到视而不见的呢?
- java http 面试题_Java面试高级篇—说说TCP,UDP和socket,Http之间联系和区别面试题12期...
- 寻找最佳特征维度_寻找5种最佳设计模式书
- 商务高端、CPU要求高-笔记本选型
- Requirements Analysis with 'pseud-Formal' Method
- SENT (Single Edge Nibble Transmission) 协议 接口
- docker部署mysql出错:mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 13 - Permission denied)
- 从源码层面理解 Either、Option 和 Try
- 腾讯音乐2020年报:懒人听书收购完成,谢振宇、太盟投资减持
- /proc/self/目录的意义
- 整理总结:零基础英语语法
- 如何使用poi解析word生成html目录结构
热门文章
- 利用C#编写一个附和闭合导线平差程序
- 地籍数据属性质检功能设计与实现
- 城市数字孪生解决方案
- Spark-SQL常用内置日期时间函数
- grid autosport额外内容下载慢_世界土壤数据库(HWSD)全球土壤数据下载处理
- Visual C++ 微软常用运行库合集
- 基于SSM框架开发的社区疫情管理系统 附带详细运行指导视频
- 【原创】VBA学习笔记(4)VBA函数 和 worksheetfunction工作表函数
- 三方演化博弈复制动态方程matlab仿真(输入参数较多时)——matlab2016a版本
- IAR报错:新手刚使用K60(非UD)时容易碰到的问题:芯片被锁,missing FlashK60XX.board