资讯专栏INFORMATION COLUMN

Ubuntu15.10安装Coreseek4.1

haobowd / 1339人阅读

摘要:是一个基于二次开发的搜索工具,属于国内出品,有完善的中文文档。官方介绍是一个独立的全文搜索引擎而是一个支持中文的全文搜索引擎,意图为其他应用提供高速低空间占用高相关度结果的中文全文搜索能力。参考资料搭建全文搜索引擎二三事快速安装

准备为之前说的电商系统做一个功能完善搜索功能,我的需求是关键字相关搜索,搜索结果多样化排序,根据用户搜索记录为用户提供最优搜索结果。在网上看了好多,看来看去感觉Coreseek还不错。Coreseek是一个基于Sphinx二次开发的搜索工具,属于国内出品,有完善的中文文档。废话不多说,这篇是Coreseek安装篇,废了我不少劲。

Coreseek官方介绍

Sphinx是一个独立的全文搜索引擎;而Coreseek是一个支持中文的全文搜索引擎,意图为其他应用提供高速、低空间占用、高相关度结果的中文全文搜索能力。CoreSeek/Sphinx可以非常容易的与SQL数据库和脚本语言集成。

应用程序可以通过三种不同的接口方式来与Sphinx搜索服务(searchd)通信: a) 通过原生的搜索 API (SphinxAPI), b) 通过Sphinx自身支持的MySQL网络协议 (使用命名为SphinxQL的SQL精简子集), 或者 c) 通过MySQL 服务端的存储插件引擎(SphinxSE)。当然, 还可以通过可以使用 a)、b)、c) 的应用程序来构建webservice来为其他应用程序提供通信

在Sphinx发行版本中提供的原生搜索API支持PHP、Python、Perl、Rudy和Java。搜索API非常轻量化,可以在几个小时之内移植到新的语言上。第三方API接口和插件提供了对Perl、C#、Haskell、Ruby-on-Rails支持,以及对其他可能的语言或者框架的支持。

从版本1.10-beta开始,Sphinx支持两种不同的索引后端:“磁盘(disk)”索引后端和“实时索引(realtime)”(RT)索引后端。磁盘索引支持在线全文索引重建,但是仅支持非文本(属性)数据的在线更新。RT实时索引在此基础上,又增加了在线的全文索引更新。在此之前的版本仅支持磁盘索引。

使用命名为数据源的接口,数据可以被加载到磁盘索引。当前系统内置MySQL和PostgreSQL以及ODBC兼容(MS SQL、Oracle等) 数据库数据源的支持,也支持从管道标准输入读取特定格式的XML数据。通过适当修改源代码,用户可以自行增加新的数据源驱动(例如:对其他类型的DBMS的原生支持)。在Coreseek发行的版本中,用户还可以使用Python脚本作为数据源来获取任何已知世界和未知世界的数据,这极大的扩展了数据源的来源。从1.10-beta版本开始的RT实时索引,只能使用MySQL接口通过SphinxQL来操作。

运行环境及系统清单

系统环境:Ubuntu15.10

Coreseek-4.1-beta:下载地址

软件依赖:gcc g++ automake libtool mysql-client libmysqlclient-dev libxml2-dev libexpat1-dev mysql-server-5.6

libiconv:下载地址

安装过程

首先把存在Ubuntu软件源的依赖装上:

sudo apt-get install gcc g++ automake libtool mysql-client libmysqlclient-dev libxml2-dev libexpat1-dev mysql-server-5.6

解压Coreseek

tar -xvf coreseek-4.1-beta.tar.gz

安装mmseg

cd mmseg-3.2.14
// 编辑
./bootstrap
./configure --prefix=/usr/local/mmseg3
sudo make && sudo make install

测试分词软件(mmseg)是否安装成功

cd /usr/local/mmseg3/bin
./mmseg -d /usr/local/mmseg3/etc/ /usr/local/src/coreseek-4.1-beta/mmseg-3.2.14/src/t1.txt

安装libiconv

tar xvf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure
make && sudo make install && ldconfig

如果你的glibc版本在2.16以上,make时很有可能出现如下错误

In file included from progname.c:26:0:
./stdio.h:1010:1: error: ‘gets’ undeclared here (not in a function)
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
^

参考这里的方法,下载patch文件,解压后打上patch即可。

wget -O - http://blog.atime.me/static/resource/libiconv-glibc-2.16.patch.gz | gzip -d - | patch -p0

安装csft

更改configure.ac文件,将

AM_INIT_AUTOMAKE([-Wall -Werror foreign])

改为

AM_INIT_AUTOMAKE([-Wall foreign])

编译:

cd csft-4.1
automake --add-missing
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 --with-python LIBS=-liconv

如果你的gcc版本在4.7以上,编译的时候可能会因为sphinx的一个bug报错,解决方法参考bug报告里的一个patch,在csft-4.1目录下执行:

wget -O - http://blog.atime.me/static/resource/sphinxexpr-gcc4.7.patch.gz | gzip -d - | patch -p0

然后执行:

make -j4  #-j4表示使用4核编译
sudo make install

搞定!

安装辅助工具

将csft-4.1/contrib/scripts目录下的searchd脚本拷贝到/etc/init.d/目录下,即可使用service命令启动和终止searchd服务。

安装好coreseek后,将/usr/local/coreseek/share/man/目录下的所有文件和目录都拷贝到/usr/local/share/man/目录里,即可使用man命令查看indexer和searchd的使用手册。

修复libiconv.so.2问题

安装完成,然后去/usr/local/coreseek/bin执行searchd提示:

./searchd: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory

原因是动态链接库未找到__解决方法:__

在/etc/ld.so.conf中加一行/usr/local/lib,运行ldconfig。ld.so.conf和ldconfig是维护系统动态链接库的。

参考资料

Sphinx/Coreseek搭建全文搜索引擎二三事

CoreSeek快速安装:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/23449.html

相关文章

  • 在 Linux 上部署 Docker

    摘要:参考官网用户指南环境依赖位及以上以上版本位在上安装支持以下的版本先决条件需要在位版本的上安装。在低于版本的内核上运行会丢失一部分功能。依据你的发行版本,在下表中找到对应条目。这个将决定将搜索的包。 参考 Docker 官网用户指南:https://docs.docker.com/engine/installation/linux/ 环境依赖 Linux:64 位 Kernel 3.1...

    xingqiba 评论0 收藏0
  • Nexus3私有仓库搭建 docker+maven+npm

    摘要:安装号称是世界上最流行的私服管理软件可以搭建几乎目前所有常见的仓库如等更是增加了对仓库的支持应该是搭建私服的唯一选择有两个版本和其中版本是免费专业版需要收费对于日常的仓库管理已经足够用支持二进制文件安装和安装这里选择安装简单方便运行以下命令 安装 Nexus号称是世界上最流行的私服管理软件(The worlds most popular repository),可以搭建几乎目前所有常见...

    bang590 评论0 收藏0
  • 基于 Harbor 搭建 Docker 私有镜像仓库

    摘要:的每个组件都是以容器的形式构建的,使用来对它进行部署。登录输入用户名,默认密码或已修改密码登录系统。 showImg(https://segmentfault.com/img/remote/1460000012261129?w=1280&h=786); 什么是 Harbor? 第一次使用这个的时候是刚进公司处理的第一个任务的时候,发现 Harbor 就是一个用于存储和分发 Docker...

    lvzishen 评论0 收藏0
  • ubuntu 16.04下docker的安装

    摘要:安装运行使用国内镜像网易在没有此文件请新建中添加此时运行命令会报错这是因为默认情况下,使用与引擎通讯。而只有用户和组的用户才可以访问引擎的。可以直接加或切换用户,但是最好是将当前用户加入用户组重启服务切换至组再运行完成。 安装:sudo apt-get updatesudo apt-get install docker.io 运行:sudo service docker start 使...

    daryl 评论0 收藏0
  • 腾讯云Codeigniter小记

    摘要:前段时间为了抓取网络文本数据,申请了腾讯云学生机,用的框架弄了一段时间。这个用户既是不可登录的操作系统用户,也是数据库用户。设置数据库用户密码为了能够让和数据库相连接,需要设置数据库用户密码。 打读研之后,更加关注算法的学习,Web开发这一块便落下了,平时也通过微信公众号关注了些,常常感慨,技术的更迭真是日新月异。 前段时间为了抓取网络文本数据,申请了腾讯云学生机,用Python的Sc...

    Ocean 评论0 收藏0

发表评论

0条评论

haobowd

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<