织梦DedeCMS v5.7全文检索使用说明(sphinx)

yizhihongxing

织梦DedeCMS v5.7全文检索使用说明(sphinx)

简介

织梦DedeCMS是一款常用的CMS系统,其中的全文检索功能相当实用。为了提升全文检索的效率和准确度,我们可以使用sphinx进行优化,提高搜索速度和搜索结果的相关性。

安装sphinx

  1. 下载sphinx

可以在sphinx官网下载最新的sphinx安装包。

  1. 安装sphinx

以Linux系统为例,下载后解压缩,进入解压缩后的目录,执行以下命令安装:

bash
./configure --prefix=/usr/local/sphinx --with-mysql --with-pgsql
make && make install

安装完成后,可以启动sphinx服务:

bash
/usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/sphinx.conf

启动成功后,可以通过命令ps aux | grep searchd查看sphinx进程是否在运行中。

安装sphinx扩展

  1. 进入DedeCMS根目录,找到include目录下的sphinxapi.php文件,在其中添加以下代码:

php
define('SPHINX_SEARCHD_HOST', 'localhost'); // sphinx服务端地址
define('SPHINX_SEARCHD_PORT', 9312); // sphinx服务端端口

  1. 在DedeCMS后台,进入插件管理,安装扩展模块“全文检索(sphinx)”并启用。

配置sphinx索引

  1. 在织梦DedeCMS后台,进入“系统管理”-“高级参数”-“全站基本参数”,勾选“启用Sphinx全站搜索”,并填写sphinx服务端地址和端口。

  2. 在sphinx服务端配置文件sphinx.conf中添加索引配置,比如:

```
source my_source
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = my_password
sql_db = my_database
sql_port = 3306
sql_query = SELECT id, title, content FROM my_table WHERE status = 1
sql_attr_uint = id
}

index my_index
{
source = my_source
path = /usr/local/sphinx/var/data/my_index
docinfo = extern
mlock = 0
morphology = stem_en
min_word_len = 2
charset_type = utf-8
html_strip = 1
ignore_chars = U+0080..U+00FF
min_infix_len = 3
enable_star = 1
}
```

这段配置将创建一个名为“my_index”的索引,索引内容取自MySQL中名为“my_table”的表的“id”、“title”、“content”字段(这里只搜索“status”字段值为1的记录),并对内容进行词干分析、停止词过滤等处理。

  1. 建立索引

在sphinx服务端执行以下命令,建立索引:

bash
/usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf --all

  1. 重启sphinx服务端

bash
/usr/local/sphinx/bin/searchd --stop
/usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/sphinx.conf

使用sphinx全文检索

在代码中调用以下接口即可利用sphinx进行全文检索:

$searchtype = '7'; // 全文检索类型为sphinx
$keyword    = '搜索关键词';
$channelid  = '1'; // 搜索的栏目ID
$orderby    = 'score'; // 按相关性排序
$orderway   = 'desc'; // 降序排列
$pagesize  = '10'; // 每页展示的搜索结果数量
$offset    = '0'; // 搜索结果的起始偏移量(从0开始)
include(DEDEINC.'/dede_search.class.php');
$so = new DedeSearch($searchtype, $channelid, $orderby, $orderway, $pagesize, $offset, $keyword);
$result = $so->Display();

在搜索结果中,可以通过以下代码获取搜索结果数量和搜索结果列表:

$num    = $so->RecordCount();
$artlist = $so->GetArray();

示例

以下示例演示如何利用sphinx搜索文章标题中包含“织梦”的文章:

  1. 配置sphinx索引

sphinx.conf文件中添加以下索引配置:

```
source demo_source
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = my_password
sql_db = my_database
sql_port = 3306
sql_query = SELECT id, title, description, content FROM dede_archives WHERE title LIKE '%织梦%' AND typeid = 1
sql_attr_uint = id
}

index demo_index
{
source = demo_source
path = /usr/local/sphinx/var/data/demo_index
docinfo = extern
mlock = 0
morphology = stem_en
min_word_len = 2
charset_type = utf-8
html_strip = 1
ignore_chars = U+0080..U+00FF
min_infix_len = 3
enable_star = 1
}
```

这段配置将创建一个名为“demo_index”的索引,索引内容取自DedeCMS中文章标题中含有“织梦”的记录(且文章所属栏目为“1”),并对内容进行词干分析、停止词过滤等处理。

  1. 建立索引

在sphinx服务端执行以下命令,建立索引:

bash
/usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf demo_index --rotate

注意,这里因为只建立demo_index这一个索引,为了节省时间可以只创建这一个索引,而不是创建所有索引。

  1. 搜索

在代码中调用以下接口进行搜索:

php
$searchtype = '7'; // 全文检索类型为sphinx
$keyword = '织梦';
$channelid = '1'; // 搜索的栏目ID
$orderby = 'score'; // 按相关性排序
$orderway = 'desc'; // 降序排列
$pagesize = '10'; // 每页展示的搜索结果数量
$offset = '0'; // 搜索结果的起始偏移量(从0开始)
include(DEDEINC.'/dede_search.class.php');
$so = new DedeSearch($searchtype, $channelid, $orderby, $orderway, $pagesize, $offset, $keyword);
$num = $so->RecordCount();
$artlist = $so->GetArray();
print_r($artlist);

这段代码将返回包含“织梦”的文章列表。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:织梦DedeCMS v5.7全文检索使用说明(sphinx) - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • MySQL 开窗函数

    MySQL开窗函数是一种高级的SQL函数,它提供了一种计算聚合值、将结果分组并对组内数据进行排序等功能的方式。我们可以使用它来执行复杂的分析和计算操作,例如:排名、分组百分比、累积和和均值、获取上/下行记录等。 下面是使用MySQL开窗函数的完整操作步骤: 1. 创建测试数据 在开始使用MySQL开窗函数之前,首先需要创建一些测试数据,这样我们才能更好地理解…

    database 2023年5月22日
    00
  • springboot集成测试里的redis

    下面是关于“Spring Boot集成测试里的Redis”的完整攻略。 1. 什么是Spring Boot集成测试? Spring Boot集成测试是指在应用程序上下文中启动完整的Spring Boot应用程序并测试其正确性,包括各个组件的正确性、依赖注入等执行过程。这是为了验证应用程序作为整体是否能够正常工作的一种测试类型。 2. Spring Boot集…

    database 2023年5月22日
    00
  • 网络层访问权限控制技术-ACL详解

    网络层访问权限控制技术-ACL详解 访问控制列表(Access Control Lists,简称 ACL)是网络安全中常用的一项技术。它通过访问控制表实现对网络流量的访问限制,从而保障网络安全。本篇文章将详细讲解ACL技术的基本原理、应用场景和配置过程。 基本原理 ACL技术是在网络层进行的,可以基于源地址、目的地址、协议类型、端口号等信息,来对网络数据进行…

    database 2023年5月22日
    00
  • Java中volatile关键字实现原理

    下面我将详细讲解“Java中volatile关键字实现原理”的完整攻略。 什么是volatile关键字 volatile是Java中的一个关键字,用来修饰变量。当一个变量被volatile修饰时,Java保证所有线程对该变量的写操作都立即同步到主存中,并且保证所有线程对该变量的读操作都从主存中读取值,而不是从线程的私有内存中。 volatile关键字实现原理…

    database 2023年5月21日
    00
  • Linux下安装PHP curl扩展的方法详解

    我们来详细讲解在Linux下安装PHP curl扩展的方法。 简介 PHP的curl扩展是一个用于与URL进行通信的工具,它支持HTTP、HTTPS、FTP、SMTP等协议,并且可以进行表单提交、文件上传等操作。curl是一个已经被广泛使用的扩展,很多PHP程序都依赖于它,因此在服务器安装PHP时,通常都会自带curl扩展。 然而,有时我们会在一些老版本的系…

    database 2023年5月22日
    00
  • CentOs7.x安装Mysql的详细教程

    下面是CentOS7.x安装MySQL的完整攻略: 环境准备 在安装之前需要先准备好以下环境:- 安装好CentOS 7.x系统- 确认安装好了yum包管理器 安装mysql 在终端中输入以下命令,更新yum源和已安装的包: sudo yum update -y && sudo yum upgrade -y 安装mysql: sudo yum…

    database 2023年5月22日
    00
  • 详解MongoDB创建数据库步骤

    MongoDB是一款基于文档存储的非关系型数据库,以下是如何创建数据库的完整攻略。 安装MongoDB 首先需要在计算机上安装MongoDB,安装方法可以查看官方文档或者从MongoDB官网下载安装程序,根据安装向导完成安装。 启动MongoDB服务 在安装完成后,需要启动MongoDB服务。在Windows系统中,可以通过运行CMD或者PowerShell…

    MongoDB 2023年3月14日
    00
  • Springboot运用vue+echarts前后端交互实现动态圆环图

    Springboot运用vue+echarts前后端交互实现动态圆环图 简介 本文将介绍如何使用Springboot框架搭建后端,配合Vue和Echarts实现前端页面,并实现前后端数据交互,最终实现动态圆环图的功能。 技术栈 前端:Vue.js、Echarts、Axios、Bootstrap等 后端:Springboot、Mybatis、MySQL等 前端…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部