发表回复 
 
主题评价:
  • 0 次(票) - 平均星级: 0
  • 1
  • 2
  • 3
  • 4
  • 5
帝国CMS安装迅搜_linux系统下
2014年08月30日, 22:44
帝国CMS安装迅搜_linux系统下
安装迅搜记录
目的:由于帝国的搜索实在是太弱了,所以想找个效率高的搜索。其实很早就知道迅搜这个开源程序,因为我做的一个插件就是用迅搜的分词系统做的。
先按官方的操作,把程序安装到服务器上。我的部署是这样的:


1\运行下面指令下载、解压安装包
cd /home
wget [url]http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2[/url]
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
这个命令进行导入的,不知道能否有一个从断点继续的方法?

RE: 索引到一大半的时候出错退出,有没有办法继续?
Indexer.php 你可以在 sql 语句中指定 offset 和 limit
--sql="select * from cdb_posts limit 999999999999 offset 5000000" 类似这样,OFFSET 不能单用必须配合 limit





[url]http://www.duzim.com/tech/201406/111.html[/url]
查找这个用户的全部帖子
引用并回复
2014年11月21日, 18:34
RE: 帝国CMS安装迅搜_linux系统下
怎么启动服务啊
查找这个用户的全部帖子
引用并回复
2016年03月31日, 03:38
RE: 帝国CMS安装迅搜_linux系统下
Me encanta toda esta información sobre tecnología. Gracias

love of [url=http://www.juristas-laboralistas.es]law[/url] and nature
访问这个用户的网站 查找这个用户的全部帖子
引用并回复
2016年10月18日, 15:48
RE: 帝国CMS安装迅搜_linux系统下
意思就是从讯搜的库里找到了指定的ID,再去通过in去查询mysql的数据么?不能直接查询mysql表里的数据么?
查找这个用户的全部帖子
引用并回复
发表回复 


论坛跳转:


正在浏览该主题的用户: 1 个游客