1.安装

1.1安装mmseg

./bootstrap # 必须执行,不然安装会失败
./configure --prefix=/usr/local/mmseg-3.2. #指定安装目录
make
make install

1.2安装coreseek

# 在csft-4.1/configure.ac中
# 查找 AM_INIT_AUTOMAKE([-Wall -Werror foreign])
# 更改 AM_INIT_AUTOMAKE([-Wall foreign])
sh buildconf.sh # 必须执行,不然安装失败
./configure --prefix=/usr/local/coreseek-4.1 --with-mysql --with-mysql-includes=/usr/local/mysql-5.6./include --with-mysql-libs=/usr/local/mysql-5.6./lib --with-mmseg --with-mmseg-includes=/usr/local/mmseg-3.2./include/mmseg --with-mmseg-libs=/usr/local/mmseg-3.2./lib
# 在csft-4.1/src/sphinxexpr.cpp中
# 查找 T val = ExprEval ( this->m_pArg, tMatch );
# 替换 T val = this->ExprEval ( this->m_pArg, tMatch );
make
make install

2.配置

测试数据表结构

CREATE TABLE `sph_counter` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`code` varchar(50) NOT NULL DEFAULT '',
`max` int(10) unsigned NOT NULL,
`add_time` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `movie` (
`movie_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '影片ID',
`old_id` int(10) unsigned NOT NULL DEFAULT '' COMMENT '旧ID',
`sn` varchar(50) NOT NULL COMMENT '影片番号',
`title` varchar(255) NOT NULL COMMENT '片名',
`cover` varchar(255) NOT NULL DEFAULT '' COMMENT '影片封面图',
`publisher_id` int(10) unsigned NOT NULL COMMENT '发行商ID',
`publish_date` date NOT NULL COMMENT '发行日期',
`add_time` datetime NOT NULL COMMENT '添加时间',
PRIMARY KEY (`movie_id`),
UNIQUE KEY `sn` (`sn`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

coreseek主索引配置

source main_javzoo_movie
{
type = mysql sql_host = 127.0.0.1
sql_user = root
sql_pass =
sql_db = javzoo
sql_port = # optional, default is sql_query = \
SELECT movie_id, movie_id AS record_id, title \
FROM movie WHERE movie_id >= $start AND movie_id <= $end ORDER BY movie_id ASC
sql_query_pre = SET NAMES utf8
sql_query_pre = REPLACE INTO sph_counter SET `code` = 'movie', `max` = (SELECT MAX(movie_id) FROM movie), add_time = NOW()
sql_query_range = SELECT MIN(movie_id), (SELECT `max` FROM `sph_counter` WHERE `code` = 'movie') FROM movie
sql_range_step = sql_attr_uint = record_id } index main_javzoo_movie_title
{
source = main_javzoo_movie
path = /usr/local/coreseek-4.1/var/data/main_javzoo_movie_title
mlock =
morphology = none
min_word_len =
html_strip =
docinfo = extern
charset_type = zh_cn.utf-
charset_dictpath = /usr/local/mmseg-3.2./etc
ngram_len =
}

3.增量配置

source delta_javzoo_movie
{
type = mysql sql_host = 127.0.0.1
sql_user = root
sql_pass = shia802927
sql_db = javzoo
sql_port = sql_query_pre = SET NAMES utf8
sql_query_range = SELECT (SELECT `max` FROM `sph_counter` WHERE `code` = 'movie'), MAX(movie_id) FROM movie
sql_range_step =
sql_query = \
SELECT movie_id, movie_id AS record_id, title \
FROM movie WHERE movie_id >= $start AND movie_id <= $end ORDER BY movie_id ASC
sql_query_post = REPLACE INTO sph_counter SET `code` = 'movie', `max` = (SELECT MAX(movie_id) FROM movie), add_time = NOW() sql_attr_uint = record_id
} index delta_javzoo_movie_title
{
source = delta_javzoo_movie
path = /usr/local/coreseek-4.1/var/data/delta_javzoo_movie_title
mlock =
morphology = none
min_word_len =
html_strip =
docinfo = extern
charset_type = zh_cn.utf-
charset_dictpath = /usr/local/mmseg-3.2./etc
ngram_len =
}

4.定时更新脚本

 #!/bin/sh -
START_DATE=`date`
echo start $ index @ $START_DATE if [ "$1" = "all" ]
then
/usr/local/coreseek-4.1/bin/indexer --config /usr/local/coreseek-4.1/etc/sphinx.conf --all --rotate >> /dev/null
elif [ "$1" = "main" ]
then
/usr/local/coreseek-4.1/bin/indexer --config /usr/local/coreseek-4.1/etc/sphinx.conf main_javzoo_movie_title --rotate >> /dev/null
elif [ "$1" = "delta" ]
then
/usr/local/coreseek-4.1/bin/indexer --config /usr/local/coreseek-4.1/etc/sphinx.conf delta_javzoo_movie_title --rotate >> /dev/null
elif [ "$1" = "merge" ]
then
/usr/local/coreseek-4.1/bin/indexer --config /usr/local/coreseek-4.1/etc/sphinx.conf --merge main_javzoo_movie_title delta_javzoo_movie_title --rotate >> /dev/null
else
echo error action!
exit
fi END_DATE=`date`
if [ "$?" -eq "" ]
then
echo complete @ $END_DATE
else
echo error @ $END_DATE
fi
echo

用法

# 更新全部索引
sh sphinx_index.sh all
# 更新主索引
sh sphinx_index.sh main
# 更新增量索引
sh sphinx_index.sh delta
# 合并增量和主索引
sh sphinx_index.sh merge

备注

配合crond实现定时增量更新和合并

Sphinx(Coreseek)安装和使用指南的更多相关文章

  1. Sphinx(coreseek) 安装使用以及词库的扩展

    1.Sphinx(coreseek) 是啥 一般而言,Sphinx是一个独立的全文搜索引擎:而Coreseek是一个支持中文的全文搜索引擎,意图为其他应用提供高速.低空间占用.高结果相关度的中文全文搜 ...

  2. sphinx,coreseek安装

    sphinx是国外的一款搜索软件. coreseek是在sphinx的基础上,增加了中文分词功能,换句话说,就是支持了中文. Coreseek发布了3.2.14版本和4.1版本,其中的3.2.14版本 ...

  3. Coreseek安装测试配置指南(转)

    Sphinx--强大的开源全文检索引擎,Coreseek--免费开源的中文全文检索引擎 软件版本:coreseek-4.1 mmseg-3.2.14 autoconf-2.64 老版本的coresee ...

  4. 【PHP高效搜索专题(1)】sphinx&Coreseek的介绍与安装

    我们已经知道mysql中带有"%keyword%"条件的sql是不走索引的,而不走索引的sql在大数据量+大并发量的时候,不仅效率极慢还很有可能让数据库崩溃.那我们如何通过某些关键 ...

  5. Linux下coreseek环境安装 、mysql数据源、sphinx扩展安装及php调用

    一.安装m4-1.4.13.autoconf-2.64.automake-1.11.libtool-2.2.6 下载安装m4-1.4.13.autoconf-2.64.automake-1.11.li ...

  6. 搭建coreseek(sphinx+mmseg3)详细安装配置+php之sphinx扩展安装+php调用示例(转)

    一个文档包含了安装.增量备份.扩展.api调用示例,省去了查找大量文章的时间. 搭建coreseek(sphinx+mmseg3)安装 [第一步] 先安装mmseg3 cd /var/install ...

  7. coreseek安装

    一.  Sphinx简介 Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎.意图为其他应用提供高速.低空间占用.高结果 相关度的全文搜索功能.Sphinx可以非常容易的与 ...

  8. Sphinx学习之sphinx的安装篇

    一.  Sphinx简介 Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎.意图为其他应用提供高速.低空间占用.高结果 相关度的全文搜索功能.Sphinx可以非常容易的与 ...

  9. coreseek 安装及使用方法详解

    coreseek 安装及使用 一般站点都需要搜索功能,如果是php+mysql站点,建议选择coreseek,如果是java站点建议使用lucene,coreseek 是一款很好的中文全文检索/搜索软 ...

随机推荐

  1. 【视频】Linux高级程序设计01.1开发工具及gcc gdb

    [课程笔记] Linux 下编辑调试工具,gcc,gdb. 把高级语言编译成二进制可执行代码的工具. 需要经历四个步骤: (1) 预处理:去掉注释,进行宏替换(#define相关),头文件(#incl ...

  2. 使用ASIHTTPRequest 编译提示找不到"libxml/HTMLparser.h"的解决方法

    使用ASIHTTPRequest xcode编译提示找不到"libxml/HTMLparser.h",解决方法如下: 1>.在xcode中左边选中项目的root节点,在中间编 ...

  3. MVC中自定义ViewPage和WebViewPage

    ViewPage和WebViewPage的作用就是将Controller中数据返回给页面,一个是针对aspx一个相对cshtml的.代码如下: public abstract class WebVie ...

  4. C++ 如何得到当前进程所占用的内存呢?【转】

    使用SDK的PSAPI (Process Status Helper)中的BOOL GetProcessMemoryInfo( HANDLE Process, PPROCESS_MEMORY_COUN ...

  5. jqGrid怎么设置初始化页面时不加载数据(不向服务器请求数据)

    最近做一些表格一直用到jqGrid,今天遇到一个问题: 1.就是页面加载的时候数据不显示,点击搜索才根据请求从服务器返回并显示内容. 2.默认不从服务器请求数据(不然在开发者工具下会显示请求不到数据的 ...

  6. elasticsearch新加入节点不能识别问题

    向ES集群中新加入节点,配置文件也没有什么问题,但是就是加不进去,这时候就需要检查一下防火墙是否开启.关闭即可

  7. Zynq Fatfs文件系统应用笔记

    Zynq Fatfs文件系统应用笔 Hello,panda 笔记介绍基于所描写叙述的Zynq Fatfs基于Xilinx xilffsv3.0和Sdpsv2.4,文件系统採用在Bare-Metal和轻 ...

  8. 【Android工具类】怎样保证Android与server的DES加密保持一致

    转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在我们的应用程序涉及到比較敏感的数据的时候,我们一般会对数据进行简单的加密.在与server之间的数据交互中 ...

  9. phpcms前台任意代码执行漏洞(php<5.3)

    phpcms v9 中 string2array()函数使用了eval函数,在多个地方可能造成代码执行漏洞 /phpsso_server/phpcms/libs/functions/global.fu ...

  10. 【C/C++学院】0828-数组与指针/内存分配/数据结构数组接口与封装

    [送给在路上的程序猿] 对于一个开发人员而言,可以胜任系统中随意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并能够运用到系统中.由此简化系统的开发,是其架构生涯的第一步. ...