xunsearch(迅搜)论坛
HDwiki的xunsearch项目安装使用记录【效果刚刚的】 - 可打印的版本

+- xunsearch(迅搜)论坛 (http://bbs.xunsearch.com)
+-- 版块: xunsearch 讨论区 (/forumdisplay.php?fid=2)
+--- 版块: 一般安装&使用 (/forumdisplay.php?fid=3)
+--- 主题: HDwiki的xunsearch项目安装使用记录【效果刚刚的】 (/showthread.php?tid=765)



HDwiki的xunsearch项目安装使用记录【效果刚刚的】 - chinapubmed - 2012年11月29日 20:21

1年多前,我用的是xungle,当时感觉用着不错,主要是搜索速度快。后来由于hdwiki升级,而xungle对新版本的支持不太好。就一直没有用全文搜索,用的还是​hdwiki自带的搜索(当然,流量有限)
上周末看了下xunsearch的教程,然后下了个VPS对应的centos 6.3 final在本地安装了一下,很好用。然后在vps上安装,现将遇到的问题,及解决方法记录下,希望对各位有帮助(以下来自安装时候的log,我用的SSH来安装的)。

第一部分:下载安装
wget [url]http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2[/url]
tar -xjf xunsearch-full-latest.tar.bz2
cd xunsearch-full-1.3.3/
sh setup.sh

错误代码:no GCC
解决方法:yum install gcc

错误代码:no C++ compiler
解决方法:yum groupinstall 'Development Tools'

错误代码:no zlib.h
解决方法:yum install zlib-devel

然后再运行
sh setup.sh
选择路径
安装

若shell出现乱码,不管,用del键删除,就好,backspace不管用,未知原因
然后就等一会

出现
Installation completed successfully, Thanks you
字样表示安装成功

第二部分:建立索引、搜索
hdwiki用的mysql,其中最重要的表是wiki_doc。
1,建立go.ini文件
每一个 xunsearch 搜索项目都有一个独立的 INI 配置文件。go.ini项目的配置文件位于 /usr/local/xunsearch/sdk/php/app/go.ini
内容如下:
代码:
project.name = go
project.default_charset = utf-8
;服务端用默认值
;server.index = 8383
;server.search = 8384

[did]
type = id

[title]
type = title

[tag]
index = self

[content]
type = body

其中did为hdwiki每个词条唯一的编号(这个与url对应)
title为词条的名字(需要能搜索)
tag为词条的标签(需要能搜索)
content为词条内容(是用body类型)
全用的默认的分词
以上是用在线生成ini生成的。地址http://www.xunsearch.com/tools/iniconfig

2,建立索引,填充数据
cd /usr/local/xunsearch/sdk/php
util/Indexer.php --rebuild --source=mysql://数据库用户名字:数据库密码@localhost/数据库名字 --sql="select did, tag, title, content from wiki_doc" --filter=debug --project=go >log.txt
说明:a,使用>log.txt是因为我的ssh显示乱码;
b,filter的后面说明,首次用可以把--filter=debug去掉

3,生成骨架
cd /usr/local/xunsearch/sdk/php
util/SearchSkel.php -p go -o /home/wwwroot/mesh/public_html/so
这样会在你的/home/wwwroot/mesh/public_html/so目录下建立一个go的文件夹,里边有三个文件(search.php,search.tpl,suggest.php,你可以把它们拷贝到需要的地方)。

4,修改骨架文件(最重要的是词条链接)
search.tpl的超链接路径约170行

代码:
                <a href="javascript:void(alert('did: <?php echo $doc->did; ?>'));">
相应位置改成
<a href="http://www.geneontology.cn/?doc-view-<?php echo $doc->did; ?>.htm">
说明:我这里域名为www.geneontology.cn。你可以改成你自己的。
其他需要修改的可以直接改这个文件(例如页面的标题等等)

这样基本就可以啦。

5,关于过滤
过滤我也是调试了好久还没有成功。最后突发奇想直接修改debug所在的源文件。

找到/usr/local/xunsearch/sdk/php/util/XSDataSource.class.php中最后约890行以后内容,改成
代码:
mb_regex_encoding('EUC-CN');
class XSDebugFilter implements XSDataFilter
{

    public function process($data, $cs=false)
    {
        //echo "\n----- DEBUG DATA INFO -----\n";
                // 替换英文
        $data['content']=str_replace("stringstochange", ' ', $data['content']);
        
        // 替换中文
        $data['content']=ereg_replace("要替换的中文", ' ', $data['content']);
        
        //去掉html标签
        $data['content'] = strip_tags($data['content']);

        //echo "\n-replaced-----\n";
        //print_r($data);
        return $data;
    }
}

说明:1, 第一行的 mb_regex_encoding('EUC-CN'); 是替换中文需要的;
2,使用中可以先把</p>替换成空格,然后再去掉html标签,这样的话你搜出来的段落间以空格分隔(否则段与段就连起来了,不好看)。

6,关于时区
若提示时区不对,可以用下面方法修改:
a, tzselect 然后选择
b,打开php5.ini文件即:/etc/php.ini(你自己的在哪里要自己找),查找date.timezone,去掉前面的分号,然后修改成date.timezone=Asia/Shanghai就ok啦
c,不行的话把时区文件覆盖下:即:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

7,其他错误
错误代码:
Permission denied (C#13)错误,可能是打开了selinux。
解决:vim /etc/selinux/config
将SELINUX=enforcing
改成
SELINUX=disabled
就ok

错误代码:
Connection refused(C#111)错误
解决:
重启xs服务
即:xunsearch/bin/xs-ctl.sh restart

错误代码:
装完PHP后,运行迅搜的检测环境php文件。提示
/usr/bin/env: php: 没有那个文件或目录
解决的方法如下:
在终端中输入命令:ln -s /www/wdlinux/php/bin/php /usr/bin/
/www/wdlinux/php/bin/php (系统上php的安装目录)
该条命令是创建符号链接,你可以在其它地方输入命令:php 来调用。

错误代码:
lib/XS.php(2097): DB has been rebuilding(S#407)

解决方法:
重启下,可能构建没完成
/usr/local/xunsearch/bin/xs-ctl.sh restart

虚拟主机php执行权限问题:

原来,当你用lnmp的vhost.sh建立虚拟主机时,它会在配置文件里加这么一行
php_admin_value open_basedir =
当然,你做的软链接是没有包括在里面的,解决方法就是把此行直接注释掉,不会有其他问题的
注意虚拟主机配置文件在这儿 /www/wdlinux/apache/conf/vhost/域名.conf (这个针对西部数据的vps)

第三部分:自荐
我在一个vps(1G内存)上建立了两个项目,对应两个网站,大家可以测试下。效果蛮好的!
a, 中文PubMed搜索
[url]http://www.chinapubmed.net/pub/search.php[/url]
这个词条约5000个,纯手工打造(数据库文件约35M,xunsearch索引文件库文件总共大概100M,建次索引约6秒,因为我有很多地方要替换,要是没有替换的话​,可能更短)。
b,专业词汇搜索
[url]http://www.geneontology.cn/so/search.php[/url]
这个词条约11000+,手工+python连接mysql导入(数据库约5M,xunsearch索引文件约10几M,建立索引约2秒)。
用着都不错!
[attachment=26]
第四部分:展望
待续!
打字不易,望加个精啊!舔舌头


RE: HDwiki的xunsearch项目安装使用记录【效果刚刚的】 - hightman - 2012年11月30日 16:33

写得非常不错。但我要说明的的:

1.命令行默认是UTF-8输出,乱码可以试试加上 -c gbk

2.过滤器用法是这样的你可以自命名一个过滤器,而不是去修改系统的过滤器,比如你在
/usr/local/xunsearch/sdk/php/lib/ 创建文件 XSTestFilter.php,然后按要求实现这个过滤器。


RE: HDwiki的xunsearch项目安装使用记录【效果刚刚的】 - niaochen - 2016年11月29日 20:18

学习了 安装成功