央企文库

首页 > 关于我们 > 资源分享

资源分享

帝国CMS插件 帝国cms集成迅搜教程 宝塔

更新时间:2021-02-13 立即下载

帝国cms集成迅搜教程 宝塔

进入宝塔SSL   输入代码

cd /home/wwwroot/xunsearch

sh setup.sh

/usr/local/xunsearch

启动xunsearch

cd /usr/local/xunsearch

bin/xs-ctl.sh restart

cat /usr/local/xunsearch/sdk/php/app/demo.ini

cd /usr/local/xunsearch/sdk/php

[root@ebs-82923 php]# util/Indexer.php --source=csv --clean demo

检查

/usr/local/xunsearch/sdk/php/util/RequiredCheck.php

/usr/local/xunsearch/sdk/php/util/SearchSkel.php demo

/usr/local/xunsearch/sdk/php/util/SearchSkel.php demo /home/wwwroot/XXXX/demo

cd /usr/local/xunsearch/sdk/php/app

[root@ebs-82923 app]# mkdir  demo.ini

/usr/local/xunsearch/sdk/php/util/Indexer.php --rebuild --source=mysql://SJK:SJK@127.0.0.1/SJK --sql="select * from phome_ecms_news" --project=demo

/usr/local/xunsearch/sdk/php/util/SearchSkel.php demo

 

设置php.ini

open_basedir=/www/wwwroot/:/tmp/:/home/xunsearch

脚本设置启动

 

卸载

/usr/local/xunsearch/bin/xs-ctl.sh faststop

rm -fr /usr/local/xunsearch

 

project.name = demo

project.default_charset = utf-8

server.index = 8383

server.search = 8384

 

[id]

type = id

index = self

tokenizer = full

 

[classid]

type = numeric

 

[title]

type = title

index = both

[newstext]

type = body

index = mixed

tokenizer = default

[newstime]

type = numeric

 

 

 

 

帝国CMS安装迅搜_linux系统下 安装迅搜记录

目的:由于帝国的搜索实在是太弱了,所以想找个效率高的搜索。其实很早就知道迅搜这个开源程序,因为我做的一个插件就是用迅搜的分词系统做的。

先按官方的操作,把程序安装到服务器上。我的部署是这样的:

1\运行下面指令下载、解压安装包

cd /home

wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2

tar -xjf xunsearch-full-latest.tar.bz2

注:在运行1这个步骤前,先打开你想下载的目标文件夹,比如我是下载在home这个文件夹里面的。如果你是第一次安装,可以 按我给的步骤来操作。

2\我在安装的时候碰到问题是,Xshell下中文乱码,所以在做第2步之前,得先把编码换成UTF8,这样才能显示中文。

执行安装脚本,根据提示进行操作,主要是输入 xunsearch 软件包的安装目录,强烈建议单独规划一个目录,而不是混到别的软件目录中。

cd xunsearch-full-1.4.8

sh setup.sh

+==========================================+

| Welcome to setup xunsearch(full) |

| 欢迎使用 xunsearch (完整版) 安装程序 |

+------------------------------------------+

| Follow the on-screen instructions please |

| 请按照屏幕上的提示操作以完成安装 |

+==========================================+

Please specify the installation directory

请指定安装目录 (默认为中括号内的值)

注:另外安装过程中,会提示安装的路径,这样很像在电脑上安装软件。我安装的路径是 " /usr/local/xunsearch",同时我把文件夹里面的data软连接在"/mnt/xunsearch/x/data",这样便于管理,打开"/usr/local/xunsearch/data"其实就是打开"/mnt/xunsearch/x/data",文件会存放在"/mnt/xunsearch/x/data",这里需要注意设定好权限,不然会有问题产生。

软链接文件夹的建立:(建立软链接的时候先删除/usr/local/xunsearch/data)

mkdir -p /mnt/xunsearch/x/data

ln -s /mnt/xunsearch/x/data /usr/local/xunsearch/data

安装成功后有信息:

+=================================================+

| Installation completed successfully, Thanks you |

| 安装成功,感谢选择和使用 xunsearch |

+-------------------------------------------------+

| 说明和注意事项: |

| 1. 开启/重新开启 xunsearch 服务程序,命令如下: |

| /usr/local/xunsearch/bin/xs-ctl.sh restart

| 强烈建议将此命令写入服务器开机脚本中 |

| |

| 2. 所有的索引数据将被保存在下面这个目录中: |

| /usr/local/xunsearch/data

| 如需要转移到其它目录,请使用软链接。 |

| |

| 3. 您现在就可以在我们提供的开发包(SDK)基础上 |

| 开发您自己的搜索了。 |

| 目前只支持 PHP 语言,参见下面文档: |

| /usr/local/xunsearch/sdk/php/README

+=================================================+

其中开机自动启动可以找这个脚本"/etc/rc.local ",然后加入: /usr/local/xunsearch/bin/xs-ctl.sh restart 就行。

3\待命令运行结束后,如果没有出错中断,则表示顺利安装完成,然后就可以启动/重新启动 xunsearch 的后台服务,下面命令中的 $prefix 请务必替换为您的安装目录,而不是照抄。我安装的路径是 " /usr/local/xunsearch"

cd $prefix

bin/xs-ctl.sh restart

显示:

INFO: stopping server[xs-indexd] (BIND:127.0.0.1:8383) .... [OK]

INFO: re-starting server[xs-indexd] ... (BIND:127.0.0.1:8383)

INFO: stopping server[xs-searchd] (BIND:127.0.0.1:8384) .... [OK]

INFO: re-starting server[xs-searchd] ... (BIND:127.0.0.1:8384)

程序正常启动,就说明可以使用了。可以看官方的文档说明,这里只是把我安装的遇到的问题写出来,详细的一些东西可以看官方的。

注:以下安装的路径:"$prefix/sdk/php/util/",先在此声明,下面很多安装都在这个路径下,所以请注意。

没有仔细看的小盆友,可能会有疑惑。

到这里很多人像我一样不知道下一步要干啥。

这也是我想写这篇文章的原因,告诉你我也碰到了这个问题,我是这样做的。

4\配置项目.INI,以下是我的配置参数,可供参考,另外有不明白的地方可以看官方文档。

每一个?xunsearch?搜索项目都一个独立的 INI 配置文件。DEMO 项目的配置文件 位于$prefix/sdk/php/app/demo.ini?使用以下指令便可直接查看配置文件内容。

cat $prefix/sdk/php/app/demo.ini

project.name = ecms

project.default_charset = GBK

;服务端用默认值

server.index = 8383

server.search = 8384

[id]

type = id

[classid]

index = self

tokenizer = full

[title]

type = title

[smalltext]

type = body

[newstime]

type = numeric

注:修改完,记得把文件名改为项目的名称,比如ecms.ini

5\# 导入 MySQL 数据库的 dbname.tbl_post 表到 demo 项目中,并且平滑重建

util/Indexer.php --rebuild --source=mysql://root:pass@localhost/dbname --sql="SELECT * FROM tbl_post" --project=demo

注:这里的前提是你已经把帝国装在服务器上了"mysql://root:pass@localhost/dbname",这个句段必须得知道root的密码,另外帝国使用的数据库名称,比如"empirecms",而"tbl_post"得换成帝国数据库里面的其中一个表,比如"phome_ecms_news"

如果项目是ecms,那把项目demo换成ecms。

我的操作;

[root@AY140508152849948e05Z php]# util/Indexer.php --rebuild --source=mysql://root:你的密码@localhost/帝国数据库 --sql="SELECT * FROM 表" --project=ecmsd

开始重建索引 ...

初始化数据源 ... mysql://root:xiaolong539827@localhost/duzim_empirecms

开始批量导入数据 (请直接输入数据) ...

开始批量导入数据 (请直接输入数据) ...

报告:累计已处理数据 10000 条 ...

报告:累计已处理数据 20000 条 ...

报告:累计已处理数据 30000 条 ...

报告:累计已处理数据 40000 条 ...

报告:累计已处理数据 50000 条 ...

报告:累计已处理数据 60000 条 ...

报告:累计已处理数据 70000 条 ...

报告:累计已处理数据 80000 条 ...

报告:累计已处理数据 90000 条 ...

报告:累计已处理数据 100000 条 ...

报告:累计已处理数据 110000 条 ...

报告:累计已处理数据 120000 条 ...

报告:累计已处理数据 130000 条 ...

报告:累计已处理数据 140000 条 ...

报告:累计已处理数据 150000 条 ...

报告:累计已处理数据 160000 条 ...

报告:累计已处理数据 170000 条 ...

报告:累计已处理数据 180000 条 ...

完成索引导入:成功 37813 条,失败 0 条

完成重建索引 ...

6\使用官方的搜索模板,自动生成

官方提供三种方式生成:

# 在当前目录下生成 demo 项目的搜索代码

util/SearchSkel.php demo

[root@AY140508152849948e05Z php]# util/SearchSkel.php ecmsd

初始化项目对象 ...

解析字段,生成变量清单 ...

检测并创建输出目录 ...

正在生成 search.php ...

正在生成 suggest.php ...

正在复制 css ...

正在复制 img ...

正在生成 search.tpl ...

完成,请将 `./ecmsd` 目录转移到 web 可达目录,然后访问 search.php 即可。

# 在指定的 /path/to/web 目录生成 demo 搜索代码,代码目录为:/path/to/web/demo

util/SearchSkel.php demo /path/to/web

# 使用选项指定方式

util/SearchSkel.php -p demo -o /path/to/web

我的操作:

util/SearchSkel.php -p ecms -o /mnt/htdocs/public_html/s/ecms

"/mnt/htdocs/public_html/s/ecms"这是自己网站里的一个文件夹,方便用FTP修改。

这三个步骤操作完成,基本就可以使用了。

如果出现问题,把问题复制然后百度,我是这样解决的,这样可以解决大部分的问题,其他就得自己动手了。关键在于动手。

怎么使用:

比如网站是www.xxx.com

那么可以打开www.xxx.com/s/ecms/search.php 搜索任意关键词就行

通过自动动手以后,知道原来迅搜不是在搜索mysql数据库的内容,而是把mysql某个库的某个表先导入自己的库里面,然后在自己的数据库里搜索,前面我们已经把自己的​数据库导入迅搜指定的存放地点。

我的配置里面,有id,classid,title,smalltext,newstime,所以导入的数据会跟这些字段匹配。

当然,我们也可以导入副表里面的newstext,做多表查询,具体实施方法,有空再跟大家探讨。

一些问题的解答:

我是使用util/Indexer.php --source=mysql://aaa:aaa@192.168.0.2/bbs_test --sql="select * from cdb_posts" --project=discuz

/usr/local/xunsearch/sdk/php/util/Indexer.php --rebuild --source=mysql://www_cedoc_cn:www_cedoc_cn@localhost/www_cedoc_cn --sql="select a.*, b.newstext as newstext from phome_ecms_news as a LEFT JOIN phome_ecms_news_data_1 as b ON a.id=b.id limit 20000" --project=demo

这个命令进行导入的,不知道能否有一个从断点继续的方法?

RE: 索引到一大半的时候出错退出,有没有办法继续?

Indexer.php 你可以在 sql 语句中指定 offset 和 limit

--sql="select * from cdb_posts limit 999999999999 offset 5000000" 类似这样,OFFSET 不能单用必须配合 limit

 

SQL语句:select                                  //查询

              a.*,                              //a表的所有列

              b.truename as writer,              //b表的truename  起个别名叫 writer  ,实际对应a表中的字段writer 作者  

              b.userpic as befrom                //b表的userpic   起个别名叫 befrom  ,实际对应b表中的字段befrom  来源

              from                              //from

              phome_ecms_news as a               //phome_ecms_news表起个别名  叫 a  表

              LEFT JOIN                          //左连接  调用左边表 a 所有字段

              phome_enewsmemberadd as b           //phome_enewsmemberadd  起个别名 a  表

              ON a.userid=b.userid                //on 加关键字  a.userid=b.userid

              order by newstime desc limit 100     //...

————————————————

文章评论