帝国CMS宝塔下集成迅搜教程

  • A+
所属分类:帝国cms技巧
帝国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:[email protected]/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:[email protected]/bbs_test --sql="select * from cdb_posts" --project=discuz
/usr/local/xunsearch/sdk/php/util/Indexer.php --rebuild --source=mysql://www_78moban_com:www_78moban_com@localhost/www_78moban_com --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     //...
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin