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

织梦DedeCMS v5.7全文检索使用说明,第1张

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

首先了解一下sphinx全文索引的相关知识。考虑到Sphinx全文索引的实际需求,本文主要介绍Sphinx全文索引对中文的支持。在此,感谢李默楠对斯芬克斯全文索引中文支持的贡献。

官网:http://www.sphinxsearch.com/
官方文档:http://www.sphinxsearch.com/docs/
中文支持:http://www.coreseek.cn/
中文用户手册下载:http://www.coreseek.cn/上传/pdf/sphinx_doc_zhcn_0.9.pdf
中文在线手册:http://www.coreseek.cn/docs/coreseek_3.2-sphinx_0.9.9.html

1。在Windows
1.1下安装Sphinx。开始前的准备工作
先从http://www.coreseek.cn/products/ft_down/下载Coreseek3.2.13。这里我们以Windows环境为例:
下载后直接解压CoreSEEK-3.2.13-Win32.zip我们假设会解压到:D:\coreseek-3.2.13-win32这里,我们需要简要了解几个目录:

【D:\coreseek-3.2.13-Win32\API】API接口目录,里面包含了PHP、Python、Ruby等 *** 作实例,其中test_coreseek.php就是一个很好的中文检索实例。

[d:\***\bin]应用程序目录,包含以下文件
*indexer:用于创建全文索引;
*search:用于测试全文索引的简单命令行(CLI)测试程序;
*searchd:一个守护进程,其他软件可以通过它进行全文搜索;
*sphinxapi:一系列searchd的客户端api库,用于流行的Web脚本语言(PHP、Python、Perl、Ruby、Java)。
*spelldump:一个简单的命令行工具,用于从ispell或MySpell(OpenOffice内置绑定)格式的词典中提取条目。使用wordforms时,您可以使用这些术语自定义索引。
*indextool:一个工具程序,用于转储关于索引的许多调试信息。自Coreseek3.1版(Sphinx0.9.9-rc2)以来,该工具已被添加。
*mmseg:工具程序和库,Coreseek用于提供中文分词和词典处理。

Sphinx配置目录
[d:\***\var]Sphinx变量&索引&日志存储目录

1.2。创建配置文件
由于DedeCms使用mysql,我们需要配置mysql的sphinx模板配置。我们可以复制csft_mysql.conf,重新命名为:csft_dedecmsv57.conf,比如这里只做全文搜索。我们需要做如下配置:[/]在[SQL命令行工具]中执行以下代码:
createtable`dede_sphinx`(
`countid`int(11)unsignednotnull,
`maxaid`int(11)unsignednotnull,
primarykey(`countid`)
)engine=myisamdefaultcharset=gbk
这是sphinx内容的统计表,用于批处理
创建数据表后,我们对sphinx的配置文件,即csft_dedecmsv57.conf修改如下,其中包含注释:
-。

#sourcedefinition
sourceMySQL
{
type=MySQL

#数据库服务器基本配置信息
SQL_host=192.168.0.103
SQL_user=dedev57
SQL_pass=dedecms
SQL_db=dedecmsv57gbk
SQL_port=3306

#设置,这里我们是gbk编码,如果是utf-8,可以设置:
#SQL_query_pre=setnamesutf8
SQL_query_pre=setnamesgbk

#数据检索增量
SQL_range_step=1000

#当前最新文档的id号
SQL_query_pre=replaceintodede_sphinxselect1,Max(id)FROMdede_archives

=$start和ARC.id<=$end#sql_query第一列id应为整数
#title,body为字符串/文本字段,并按全文索引

#获取当前最大搜索ID
SQL_query_range=select1,maxaidfromdede_sphinxwherecountyID=


sql_attr_uint=typeid#从sql中读取的值必须是整数
SQL_attr_uint=typeid2
SQL_attr_uint=channel
SQL_attr_uint=click
SQL_attr_uint=badpost
SQL_attr_uint=goodpost
SQL_attr_uint=scores

#命令行查询时,从数据库中读取原始数据信息
SQL_query_info=SELECTARC。*,arts.bodyfromdede_archivesasarcleftjoindede_addonartsonarc.id=art.aidwarerc.id=$id
}

源增量
{
type=mysql

#数据库服务器的基本配置信息
SQL_host=192.168.0.103
SQL_user=dedev57
SQL_pass=dedecms
SQL_db=dedecmsv57gbk
SQL_port=3306
SQL_query_pre=SETNAMESgbk

#增量索引,从最大id开始
SQL_query=selectarc.id,arc.typeid,arc.typeid2,arc.sortrank,arc.flag,arc.channel,arc.ismake,arc.arcrank,arc.click,ARC.title,ARC.shorttitle,ARC.color,ARC.writer,ARC.source,ARC.litpic,ARC.pubdate,ARC.senddate,ARC.mtype,ARC.description,ARC.badpost,ARC.goodpost,ARC.scores,ARC.lastpost(selectMAXaidFROMdede_sphinxwherecountid=1)
#从SQL中读取的值必须是整数

SQL_query_post=replaceintodede_sphinxselect1,MAX(idFROMdede_archives

SQL_attr_uint=typeid
SQL_attr_uint=typeid2
SQL_attr_uint=channel

#命令行查询时,从数据库中读取原始数据信息
SQL_query_info=SELECTARC。*,arts.bodyfromdede_archivesasarcleftjoindede_addonartsonarc.id=art.aidwarerc.id=$id
}

#indexdefinition
indexMySQL
{
source=MySQL#
path=d:/coreseek-3.2.13-Win32/var/data/MySQL
docinfo=extern
mlock=0
morphology=none
min_word_len=1
HTML_strip=0
#charset_dictpath=/1

indexdelta:MySQL
{
min_word_len=1
source=delta
path=D:/coreseek-3.2.13-win32/var/data/delta.new
}

#全局索引定义
索引器
{
mem_limit=128m
}

#searchd服务定义
Searchd
{
listen=9312
read_timeout=5
max_children=30
max_matches=1000
seamless_rotate=0
preopen_indexes=0
unlink_old=1
PID_file=D:/coreseek-3.2.13-win32/var/log/Searchd_MYS

-

1.3。构建索引
配置完成后,我们需要先构建索引,打开开始菜单中的【运行】,输入“cmd”,确认后打开命令行。输入以下代码:

d:&;cdD:\coreseek-3.2.13-win32\bin

首先切换到sphinx的bin目录,然后执行:

indexer.exe-cD:\coreseek-3.2.13-win32\etc\csft_dedecmsv57.confMySQL-rotate

这时,sphinx开始构建索引。如果数据量很大,可能需要很长时间,需要耐心等待(如图1)。


然后创建下一个增量索引并使用以下命令:
indexer.exe-cd:\coreseek-3.2.13-win32\etc\csft_dedecmsv57.confdelta-rotate。

1.4。测试检索是否正常
索引建立后,我们来看看匹配的内容是否能正常搜索到。您可以继续在cmd中输入以下命令:

search.exe-cD:\coreseek-3.2.13-win32\etc\csft_dedecmsv57.confdedecms

如果数据可以正常返回(如图2所示),则索引已经成功建立。


2。将sphinx
与DedeCMS程序2.1结合使用。启动sphinx服务
在上面的步骤中,我们已经成功生成了索引,接下来,为了能够使用客户端调用,您需要启动Sphinx服务。
可以直接在cmd中执行:
search.exe-CD:\CoreSeek-3.2.13-Win32\etc\CSFT_dedeecmsv57.conf
这样我们就可以启动sphinx了。


sphinx_test.PHP
-
<;?PHP
set_time_limit(0);
require_once(dirname(__FILE__)。"/include/common.Inc.PHP");
$sphinx=newsphinxclient;

$mode=SPH_匹配_任何;//匹配模式
$host="localhost";//服务IP
$port=9312;//服务端口

$sphinx-->;SetServer($host,$port);
$sphinx->;SetArrayResult(true);
$sphinx->;SetMatchMode($mode);

$RES=$sphinx->;查询('Dreamweaver内容管理系统');

//var_dump($sphinx);
//var_dump($RES);
$total=count($RES['matches']);
for($I=0;$i<总计美元;$i++)
{
var_dump($RES['matches'][$I]);
}

-.


2.2。创建DedeSphinx服务
我们通过searchd.exe启动了该服务,但遗憾的是,在关闭cmd窗口后,我们无法继续访问它。解决方法如下:
同样切换到bin目录并执行:

searchd.exe-install-cd:\coreseek-3.2.13-win32\etc\csft_dedecmsv57.conf-servicenameDedeSphinx
这样就在系统中成功创建了一个DedeSphinx服务,不需要打开窗口(如图5所示)。


3。更新维护[/s2/]
对于全文检索的索引,我们需要不定期的生成。如果数据量很小,我们可以直接使用上面的命令生成索引来重建它。如果数据量很大,我们需要更新定义的全文索引。

如果内容经常更新,则需要每分钟执行以下命令(您可以创建一个脚本并使用windows来计划定期执行的任务)

生成增量索引:

indexer.exe-cD:\coreseek-3.2.13-win32\etc\csft_dedecmsv57.confdelta-rotate

当然,每天你都需要将增量索引合并到主索引mysql中,你需要执行:

indexer.exe-cD:\coreseek-3.2.13-win32\etc\csft_dedecmsv57.conf-合并mysqldelta-rotate

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/773595.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存