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

织梦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查询速度测试->连接查询

    快速生成大量数据 INSERT INTO tableName1(pn_code,belong_id,factory_number) SELECT pn_code,belong_id,factory_number FROM tableName1 四张表合计4000万条数据, 如果不带where,联查的速度是非常快的,前提是需要带limit,limit越小越快,…

    MySQL 2023年4月13日
    00
  • Linux系统设置开机自动运行脚本的方法实例

    一、Linux开机自动运行脚本的方法 在Linux系统中,我们可以通过编写脚本,实现系统开机自动运行一些指定的程序、服务等。以下是实现Linux开机自动运行脚本的方法: 将脚本文件复制到/etc/init.d/目录下,并加上可执行权限。例如,假设我们有一个脚本文件 test.sh,那么我们可以通过以下命令将其复制到 init.d 目录下: sudo cp t…

    database 2023年5月22日
    00
  • MongoDB GridFS(二进制数据存储)使用方法详解

    什么是GridFS? MongoDB是一款文档型数据库,存储的数据是以BSON格式保存的。由于文档型数据库的特点,它适合存储小型的数据块,但对于大型的二进制数据,如音频、视频等文件,存储时可能需要分成多个文档进行存储。这种情况下,MongoDB提供了GridFS这个存储引擎。 GridFS是一个存储二进制数据(如图片、音频、视频等)的规范,它将大文件拆分成多…

    MongoDB 2023年3月14日
    00
  • Spark SQL小文件问题处理

    Spark SQL是大数据处理中非常常用的工具,它可以通过基于Hadoop的分布式计算架构,快速地处理大规模的数据。但是在实际的应用中,我们常常会遇到处理小文件的问题。Spark SQL处理小文件时会产生大量的小任务,导致任务调度和执行效率非常低。本文将从以下几个方面详细讲解Spark SQL小文件问题处理的完整攻略。 1. 问题分析 Spark SQL小文…

    database 2023年5月21日
    00
  • .Net Core中使用MongoDB搭建集群与项目实战

    .Net Core中使用MongoDB搭建集群与项目实战 MongoDB是一个高性能、高可用的非关系型数据库,它支持分布式部署,适合大规模的数据存储和处理。在本篇文章中,我们将会介绍如何在.Net Core项目中使用MongoDB并搭建MongoDB集群。 1. 搭建MongoDB集群 要搭建MongoDB集群,我们需要至少3个MongoDB实例。在这里,我…

    database 2023年5月22日
    00
  • sql语句中日期相减的操作实例代码

    下面是详细讲解“SQL语句中日期相减的操作实例代码”的完整攻略。 1. 操作思路 SQL语句中进行日期相减的操作,其实就是对两个日期变量之间的天数差进行计算,然后利用这个差值进行进一步的操作,例如进行数据筛选、计算等。 对于SQL语句中进行日期相减的操作,需要注意的是日期的格式和计算方式,常用的日期格式包括yyyy-mm-dd、yyyy/mm/dd、yyyy…

    database 2023年5月22日
    00
  • 关于mysql 的时间类型选择

    关于MySQL的时间类型选择,我们需要先了解MySQL中可选的时间类型,常用的时间类型包括: YEAR:年份,范围为1901~2155年,占用1个字节 DATE:日期,范围为1000-01-01到9999-12-31,占用3个字节 TIME:时间,范围为-838:59:59到838:59:59,占用3~5个字节(无符号和有符号的存储方式不同) DATETIM…

    database 2023年5月22日
    00
  • sql模式设置引起的问题解决办法

    关于“SQL模式设置引起的问题解决办法”的攻略,我会从以下几个方面进行详细讲解: SQL模式的概念 SQL模式设置引起的问题分析 SQL模式设置的修改方法 示例说明 1. SQL模式的概念 SQL模式是MySQL企业版默认启用的一种特性,它包含了一系列的参数配置,用于控制MySQL所使用的SQL语句、数据类型及操作的行为。你可以将SQL模式看做一种“规则集合…

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