美国虚拟主机Hostease

Mediawiki中文技术论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4312|回复: 0

mediawiki安装改进手记-使用mediawikit和postgresql搭建有强大搜索

[复制链接]
发表于 2011-11-28 10:47:09 | 显示全部楼层 |阅读模式
HostEase主机优惠
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。

本文转载自互联网
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

BlueHost美国主机优惠码

Archiver|手机版|小黑屋|Mediawiki中文技术论坛

GMT+8, 2024-3-28 21:38 , Processed in 0.039170 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表