ubuntu20.0.4安装coreseek4.1

一、安装gcc-4.8

ubuntu20.0.4默认安装gcc 9.4,但coreseek4.1是早期项目,最好采用早期的gcc版本进行编译。笔者选用的是gcc 4.8。下面是安装多版本gcc、g++的说明:

1.添加旧版本源(关键步骤)
Ubuntu 20.04默认源中可能不包含gcc-4.8,需手动添加Ubuntu 16.04的源:

sudo gedit /etc/apt/sources.list

在文件末尾添加以下内容

deb http://dk.archive.ubuntu.com/ubuntu/ xenial main
deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe

更新软件源:

sudo apt update

2.安装gcc-4.8及依赖

sudo apt install gcc-4.8 g++-4.8 gcc-4.8-multilib g++-4.8-multilib

3.gcc-9以及gcc-4.8加入版本管理
使用update-alternatives创建软链接并设置优先级(数值越大优先级越高):

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 30
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 30
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 20

4.切换默认版本

执行以下命令后,按提示选择gcc-4.8对应的编号:

sudo update-alternatives --config gcc
sudo update-alternatives --config g++

5.验证版本

gcc -v  # 应显示4.8.x版本
g++ -v  # 同理

 

二、Coreseek安装与配置

安装依赖

sudo apt install -y \
    build-essential \
    automake \
    libtool \
    pkg-config \
    libmysqlclient-dev \
    libxml2-dev \
    libexpat1-dev \
    python3-dev \
    zlib1g-dev \
    libcurl4-openssl-dev \
    mysql-devel \
    libiconv-dev    

mysql-devel:MySQL开发库,用于数据库连接。
python-devel:解决编译时Python.h缺失问题。

1、下载和解压Coreseek

cd /opt
wget https://down.yundreams.com/uploads/soft/coreseek-4.1-beta.tar.gz
tar -xzvf coreseek-4.1-beta.tar.gz
cd coreseek-4.1-beta

2. 安装mmseg-3.2.14中文分词模块

2.1修改coreseek-4.1-beta/mmseg-3.2.14/src/mmseg_main.cpp文件

//第1处修改
//将254行
char txtHead[3] = {239,187,191};
//修改为
unsigned char txtHead[] = {0xEF, 0xBB, 0xBF};  // 使用十六进制无符号类型


//第2处修改
//将306行
printf("\n\nWord Splite took: %d ms.\n", srch);
//修改为
printf("\n\nWord Splite took: %ld ms.\n", srch);  // %ld 匹配 size_t

2.2回到coreseek-4.1-beta/mmseg-3.2.14目录,并执行命令:

./bootstrap

# 配置项目并忽略兼容性警告
./configure CXXFLAGS="-Wno-deprecated -Wno-narrowing" --prefix=/usr/local/mmseg3

make

若make提示  “make[2]: *** No rule to make target '../src/libmmseg.la', needed by 'mmseg'. Stop.”则需要先手动单独构建 libmmseg

cd src/
# 确保该目标能生成库文件
make libmmseg.la

检查 src/.libs/ 目录,确保存在 libmmseg.a 或 libmmseg.la 文件。

回到coreseek-4.1-beta/mmseg-3.2.14目录,并执行命令:

make && make install

2.3验证分词功能:

echo "测试中文分词" > test.txt
/usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc test.txt

输出类似测试/x 中文/x 分词/x即成功。

 

3.安装csft-4.1(coreseek改版的sphinx)

cd进入coreseek-4.1-beta/csft-4.1

3.1修改配置文件解决编译错误

sed -i 's/AM_INIT_AUTOMAKE(\[-Wall -Werror foreign\])/AM_INIT_AUTOMAKE([-Wall foreign])/g' configure.ac

3.2修改src/sphinxexpr.cpp文件

//第1处修改
//将1746行
T val = ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage
//修改为
T val = this->ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage

//第2处修改
//将1777行
T val = ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage
//修改为
T val = this->ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage

//第3处修改
//将1823行
T val = ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage
//修改为
T val = this->ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage

3.3回到coreseek-4.1-beta/csft-4.1目录,生成编译配置

#生成缺失的配置辅助文件
automake --add-missing

#生成configure
./buildconf.sh

./configure --prefix=/usr/local/coreseek \
            --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg \
            --with-mmseg-libs=/usr/local/mmseg3/lib \
            --with-mysql  # 指定MySQL路径(若自定义安装)

关键配置项说明:
--with-mysql:自动检测MySQL开发库路径,需确保mysql_config在环境变量中。
--with-mmseg:集成MMSeg分词功能。

3.4编译并安装

make && make install

3.5配置 Sphinx/Coreseek

默认配置文件位于 /usr/local/coreseek/etc/csft.conf。

Coreseek 4.1的配置文件(通常命名为csft.conf或sphinx.conf)是用于定义数据源、索引参数及搜索行为的核心文件。以下是其详细配置说明,结合了安装后的实际应用场景和官方模板的典型结构:

3.5.1. 配置文件基础结构
配置文件分为两大核心部分:数据源(source)和索引(index),还可能包含全局设置和搜索服务配置。以下是一个典型配置框架:

source test {
    # 数据源定义(如MySQL连接信息)
}


index test {
    # 索引定义(关联数据源及分词参数)
}


searchd {
    # 搜索服务守护进程配置
}

3.5.2数据源(source)配置
主要用于定义数据库连接及数据获取规则,常见于MySQL数据源:

source example {
    type            = mysql       # 数据源类型(MySQL/PostgreSQL等)
    sql_host        = localhost   # 数据库地址
    sql_user        = root        # 用户名
    sql_pass        = password    # 密码
    sql_db          = test_db     # 数据库名
    sql_port        = 3306        # 端口(默认3306)
    sql_query_pre   = SET NAMES utf8  # 预处理语句(确保编码正确)
    sql_query       = SELECT id, title, content FROM documents  # 主查询语句
    sql_query_range = SELECT MIN(id), MAX(id) FROM documents  # 分块查询范围
    sql_range_step  = 10000       # 分块步长(避免大表内存溢出)
}

关键参数说明:
sql_query_pre:执行主查询前的操作,如设置字符集。

sql_query_range + sql_range_step:用于大数据表的分批索引构建。

支持多数据源联合索引(需定义多个source块)。

3.5.4索引(index)配置
定义如何从数据源构建索引,并集成中文分词:

index example {
    source          = example      # 关联的数据源名称
    path            = /path/to/index  # 索引文件存储路径
    charset_type    = zh_cn.utf-8  # 指定中文字符集
    charset_dictpath= /usr/local/mmseg/etc/  # mmseg分词词典路径
    ngram_len       = 1            # 单字切分(配合mmseg时通常设为1)
    min_word_len    = 1            # 最小词长
}

中文分词相关:
charset_dictpath必须指向mmseg安装目录下的etc/文件夹,包含uni.lib等词典文件。

若需自定义词库,可通过mmseg -u生成词典后替换uni.lib。

3.5.5 搜索服务(searchd)配置
控制搜索守护进程的行为:

searchd {
    listen          = 9312         # 监听端口
    log             = /var/log/searchd.log  # 日志路径
    query_log       = /var/log/query.log    # 查询日志
    pid_file        = /var/run/searchd.pid  # 进程ID文件
    max_children    = 30           # 最大并发连接数
    read_timeout    = 5            # 超时时间(秒)
}

4常用命令

 #启动服务 
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf

#生成索引 --rotate:平滑重建索引,避免服务中断。
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --all --rotate

#测试搜索
/usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/csft.conf "关键词"

#索引增量任务,配合定时任务执行:
/usr/local/coreseek/bin/indexer --config /usr/local/coreseek/etc/csft.conf vc_subject_details_index --rotate && \
/usr/local/coreseek/bin/indexer --merge main vc_subject_details_index --config /usr/local/coreseek/etc/csft.conf --rotate

 

posted @ 2025-04-10 14:37  tros  阅读(94)  评论(0)    收藏  举报