帝国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 = selftokenizer = full
[classid]
type = numeric
[title]
type = title
index = both[newstext]
type = body
index = mixedtokenizer = default[newstime]
type = numeric
帝国CMS安装迅搜_linux系统下 安装迅搜记录
目的:由于帝国的搜索实在是太弱了,所以想找个效率高的搜索。其实很早就知道迅搜这个开源程序,因为我做的一个插件就是用迅搜的分词系统做的。先按官方的操作,把程序安装到服务器上。我的部署是这样的:1\运行下面指令下载、解压安装包cd /homewget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2tar -xjf xunsearch-full-latest.tar.bz2注:在运行1这个步骤前,先打开你想下载的目标文件夹,比如我是下载在home这个文件夹里面的。如果你是第一次安装,可以 按我给的步骤来操作。2\我在安装的时候碰到问题是,Xshell下中文乱码,所以在做第2步之前,得先把编码换成UTF8,这样才能显示中文。执行安装脚本,根据提示进行操作,主要是输入 xunsearch 软件包的安装目录,强烈建议单独规划一个目录,而不是混到别的软件目录中。cd xunsearch-full-1.4.8sh 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/dataln -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 $prefixbin/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.iniproject.name = ecmsproject.default_charset = GBK;服务端用默认值server.index = 8383server.search = 8384[id]type = id[classid]index = selftokenizer = full[title]type = title[smalltext]type = body[newstime]type = numeric注:修改完,记得把文件名改为项目的名称,比如ecms.ini5\# 导入 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/demoutil/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 //...
————————————————