sphinx(四)centos7安装sphinx3.3.1

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Sphinx3.3.1版本是不需要编译安装的,下载下来,解压,直接就能用。 这个和我目前正在使用的sphinx-for-chinese 是有不同的。

QQ图片20220424180252.jpg

Sphinx使用的版本我是一点点增高的。


Coreseek3.2是基于sphinx0.9开发的。


Sphinx-for-chinese是基于sphinx2.3.1开发的。


我这里尝试一下sphinx的最新版本sphinx3.3.1,当然,这个只做为了解就好,我也只是尝试一下。


百度上有提供sphinx+swcs中文分词实现中文全文检索的样例,我没有尝试。

有兴趣,请移步百度。


1:安装sphinx


Sphinx官网:sphinxsearch.com/


安装的文件包也是在官网中。


Sphinx3.3.1版本是不需要编译安装的,下载下来,解压,直接就能用。 这个和我目前正在使用的sphinx-for-chinese 是有不同的。


2:创建索引报错


创建单个索引:


using config file '/usr/local/sphinx/etc/sphinx.conf'...
indexing index 'test1'...
ERROR: index 'test1': sql_connect: failed to load libmysqlclient (or libmariadb) (DSN=mysql://root:***@localhost:3306/test).


解决:


查找libmysqlclient


find / -name 'libmysqlclient*'
/usr/lib64/mysql/libmysqlclient.so.18
/usr/lib64/mysql/libmysqlclient.so.18.0.0
/usr/local/mariadb/lib/libmysqlclient_r.so
/usr/local/mariadb/lib/libmysqlclient.a
/usr/local/mariadb/lib/libmysqlclient.so
/usr/local/mariadb/lib/libmysqlclient_r.a
/usr/local/download/mariadb-10.5.6/debian/libmysqlclient18.install
/usr/local/download/mariadb-10.5.6/libmariadb/libmariadb/libmysqlclient_r.so
/usr/local/download/mariadb-10.5.6/libmariadb/libmariadb/libmysqlclient.a
/usr/local/download/mariadb-10.5.6/libmariadb/libmariadb/libmysqlclient.so
/usr/local/download/mariadb-10.5.6/libmariadb/libmariadb/libmysqlclient_r.a


创建软连接:


ln -s /usr/local/mariadb/lib/libmysqlclient.so /usr/lib/libmysqlclient.so
vim /etc/ld.so.conf


增加配置:


/usr/local/mariadb/bin/mysql # 你的数据库执行文件


再次创建索引成功:


/usr/local/sphinx/bin/indexer -c /usr/local/sphinx/etc/sphinx.conf  --all --rotate
/usr/local/sphinx/bin/searchd -c /usr/local/sphinx/etc/sphinx.conf --stop #停止服务


然后重启


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


3:停止sphinx服务报错:


/usr/local/sphinx/bin/searchd -c /usr/local/sphinx/etc/sphinx.conf --stop
Sphinx 3.3.1 (commit b72d67b)
Copyright (c) 2001-2020, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
using config file '/usr/local/sphinx/etc/sphinx.conf'...
FATAL: stop: pid file '/usr/local/sphinx/log/searchd.pid' does not exist or is not readable
shutdown complete


重启服务器再启动sphinx就可以了。


4:sphinx配置文件


Sphinx.conf


#
# Minimal Sphinx configuration sample (clean, simple, functional)
#
source src1
{
    type            = mysql
    sql_host        = localhost
    sql_user        = mysql
    sql_pass        = 
    sql_db          = test
    sql_port        = 3306  # optional, default is 3306
    sql_query       = \
        SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \
        FROM documents
    sql_attr_uint   = group_id
    sql_attr_uint   = date_added
}
index test1
{
    source          = src1
    path            = /usr/local/sphinx/data/test1
}
index testrt
{
    type            = rt
    rt_mem_limit    = 128M
    path            = /usr/local/sphinx/data/testrt
    rt_field        = title
    rt_field        = content
    rt_attr_uint    = gid
}
indexer
{
    mem_limit       = 128M
}
searchd
{
    listen          = 9312
    listen          = 9306:mysql41
    log             = /usr/local/sphinx/log/searchd.log
    query_log       = /usr/local/sphinx/log/query.log
    read_timeout    = 5
    max_children    = 30
    pid_file        = /usr/local/sphinx/log/searchd.pid
    seamless_rotate = 1
    preopen_indexes = 1
    unlink_old      = 1
    workers         = threads # for RT to work
    binlog_path     = /usr/local/sphinx/data
}


5:创建数据表并写入测试数据


Sphinx为我们提供了一个测试的sql文件


文件在安装目录下etc目录中(example.sql),下边是文件内容:


DROP TABLE IF EXISTS test.documents;
CREATE TABLE test.documents
(
    id          INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT,
    group_id    INTEGER NOT NULL,
    group_id2   INTEGER NOT NULL,
    date_added  DATETIME NOT NULL,
    title       VARCHAR(255) NOT NULL,
    content     TEXT NOT NULL
);
REPLACE INTO test.documents ( id, group_id, group_id2, date_added, title, content ) VALUES
    ( 1, 1, 5, NOW(), 'test one', 'this is my test document number one. also checking search within phrases.' ),
    ( 2, 1, 6, NOW(), 'test two', 'this is my test document number two' ),
    ( 3, 2, 7, NOW(), 'another doc', 'this is another group' ),
    ( 4, 2, 8, NOW(), 'doc number four', 'this is to test groups' );
DROP TABLE IF EXISTS test.tags;
CREATE TABLE test.tags
(
    docid INTEGER NOT NULL,
    tagid INTEGER NOT NULL,
    UNIQUE(docid,tagid)
);
INSERT INTO test.tags VALUES
    (1,1), (1,3), (1,5), (1,7),
    (2,6), (2,4), (2,2),
    (3,15),
    (4,7), (4,40);


6:PHP调用sphinx


Demo.php


<?php
require("/usr/local/sphinx/api/sphinxapi.php");
$sphinx = new Sphinxclient();
$sphinx->setServer('127.0.0.1',9312);
$keyword='test';//要搜索的关键字
$index= 'test1';//索引名称
//查询出关键字所在的主键ID
$sphinx->_limit=2000;
$res= $sphinx->Query($keyword, $index);
// $res = $sphinx->Query($keyword, '*');
if(isset($res['matches'])){
    $ids = array_keys($res['matches']);
    $ids = implode(',',$ids);
}else{
    print_r('内容不存在');exit;
}
$sql = "SELECT * from documents where id in ($ids)"; 
$mysqli_con= mysqli_connect('127.0.0.1','mysql', '', 'test', '3306', '/usr/local/mariadb/tmp/mysql.sock');
$res = mysqli_query($mysqli_con, $sql);
while($row = mysqli_fetch_assoc($res)){
    $data[] = $row;
}
foreach($data as $key=>$v)
{
    $v = str_replace($keyword, "<font color='red'>{$keyword}</font>", $v);
    $data[$key]= $v;
}
print_r($data);


这篇的细节可能写的不太清楚,具体使用流程可以参照前两篇的使用流程。



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
存储 安全 Linux
CentOS安装SeaweedFS
通过上述步骤,您应该能够在CentOS系统上成功安装并启动SeaweedFS。记住,根据实际部署规模和需求,可能还需要进一步调整配置参数和优化网络布局。SeaweedFS的灵活性和扩展性意味着随着使用深入,您可能需要探索更多高级配置和管理策略。
107 64
|
1月前
|
存储 安全 Linux
CentOS安装SeaweedFS
通过上述步骤,您应该能够在CentOS系统上成功安装并启动SeaweedFS。记住,根据实际部署规模和需求,可能还需要进一步调整配置参数和优化网络布局。SeaweedFS的灵活性和扩展性意味着随着使用深入,您可能需要探索更多高级配置和管理策略。
114 61
|
11天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
11天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux系统之Centos7安装cockpit图形管理界面
【10月更文挑战第12天】Linux系统之Centos7安装cockpit图形管理界面
83 1
Linux系统之Centos7安装cockpit图形管理界面
|
19天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
56 3
|
20天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
36 2
|
1月前
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
123 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
22天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
64 2
|
26天前
|
Linux 知识图谱
Centos7安装killall,fuser, killall,pstree和pstree.x11
通过上述步骤,您已在CentOS 7系统中成功部署了killall、fuser、pstree以及pstree.x11,为高效管理系统进程打下了坚实基础。更多关于服务器管理与优化的知识,获取全面技术支持与解决方案。
35 1
下一篇
无影云桌面