|
yahoo以前使用的是twiki,后来更换了mediawiki,扩展了postgresql的搜索,使mediawiki的搜索功能得到了加强,这里,记录下我在校内搭建一整套的手记:
第一步.准备php和postgresql环境
大环境:因为是内部系统,所以图省事,WEB使用的是一个ubuntu的机器,安装这些丝毫不用费力了。就是先用apt安装php、nginx,源码包安装lighttpd取spawn-cgi一枚备用。源码包安装postgresql8.3.3。
#apt-get install php5 php5-pgsql php5-mbstring php5-cgi
#apt-get install nginx
#wget http://www.lighttpd.net/download/lighttpd-1.4.19.tar.gz
#tar -xvf lighttpd-1.4.19.tar.gz
#cd lighttpd-1.4.19/
#./configure
#make
#cp src/spawn-fcgi /usr/local/bin/spawn-fcgi
(这里图快,没使用php-fpm)
#adduser www
#spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php-cgi
修改php.ini文件
cgi.fix_pathinfo=1; 这样php-cgi方能正常使用SCRIPT_FILENAME这个变量
在/etc/nginx/sites-enable/default中添加以下代码
server {
listen 80; //端口
server_name wiki.54chen.com; //虚拟域名
access_log /var/log/nginx/hwiki.54chen.com.access.log; //访问日志
location / {
root /home/wiki.54chen.com; //size根目录
index index.php;
}
location ~ \.php$ { #php fastcgi的配置
fastcgi_pass 127.0.0.1:9000; #php fastcgi的代理端口与ip
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/wiki.54chen.com$fastcgi_script_name; #要处理的php文件的路径
include /etc/nginx/fastcgi_params; #fastcgi的参数文件地址
}
}
启动
/etc/init.d/nginx start
大功告成!
postgresql的安装请进使用postgreSQL+bamboo搭建比lucene方便N倍的全文搜索 第一部分
第二步.安装mediawiki
#wget http://downloads.sourceforge.net ... gz?use_mirror=jaist
#解压到/home/wiki.54chen.com
通过浏览器访问安装,安装时选择postgresql.
将wiki目录下connfig目录中的LocalSettings.php剪切到wiki目录中,把$wgEnableUploads = false;改为$wgEnableUploads = true;(这样允许上传图片了),还有就是把Wiki的Logo改成您所需要的$wgLogo = "$wgStylePath/common/images/wiki.png"。
第三步.修改meidawiki及修改sql
1.修改DB
按标题搜的触发器修改为
CREATE OR REPLACE FUNCTION mediawiki.ts2_page_title()
RETURNS "trigger" AS
$BODY$
BEGIN
IF TG_OP = 'INSERT' THEN
NEW.titlevector = to_tsvector('chinesecfg',COALESCE(REPLACE(NEW.page_title,'/',' '),''));
ELSIF NEW.page_title != OLD.page_title THEN
NEW.titlevector := to_tsvector('chinesecfg',COALESCE(REPLACE(NEW.page_title,'/',' '),''));
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION mediawiki.ts2_page_title() OWNER TO wikiuser;
按内容搜索的触发器修改为
CREATE OR REPLACE FUNCTION mediawiki.ts2_page_text()
RETURNS "trigger" AS
$BODY$
BEGIN
IF TG_OP = 'INSERT' THEN
NEW.textvector = to_tsvector('chinesecfg',COALESCE(NEW.old_text,''));
ELSIF NEW.old_text != OLD.old_text THEN
NEW.textvector := to_tsvector('chinesecfg',COALESCE(NEW.old_text,''));
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION mediawiki.ts2_page_text() OWNER TO wikiuser;
对标题的索引修改
drop index ts2_page_title;
CREATE INDEX ts2_page_title
ON mediawiki.page
USING gin
(titlevector);
对内容的索引修改
drop index ts2_page_text;
CREATE INDEX ts2_page_text
ON mediawiki.pagecontent
USING gin
(textvector);
修改 includes/SearchPosgres.php 146行:
$prefix = $wgDBversion < 8.3 ? "'default'," : "'chinesecfg',";
大功告成,搜索的时候就使用了bamboo的分词来搜了,如果还有兴趣可以加强175-179行的sql就能得到更加强大的wiki。
本文转载自互联网 |
|