掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1002|回复: 2

[讨论] 我的维基解析器又要延期了。(对维基有兴趣的也进来聊下)

[复制链接]

该用户从未签到

发表于 2013-12-20 15:33:19 | 显示全部楼层 |阅读模式
本帖最后由 惟吾无为 于 2013-12-30 13:47 编辑 & J" @% _& n% ?- `& R2 _
& _2 x: M' Y& W% `
我悔悟了, 简单版: https://www.pdawiki.com/forum/thread-11611-1-1.html6 I1 @  Z* Q2 T

; j) N4 t. B) t1 E# H- z-------: x+ w- H4 |! ^4 ]9 j+ @) K
之前都是以2012年9月的转储文件做为分析参考的。) n" U5 p+ `* i, C1 s

- R' |0 t1 r5 S8 Q& x& [$ D月初完成了一个解析器,但是速度很慢。1分钟也不过几个页面,达不到实用的地步。如果不处理模板的话,1分钟可以处理2-5k个页面。一个小时不到就把zhwiki20131120的xml解析完了。. z, G* L* w  ?3 p4 G
0 F- V5 G# S# P! o4 e1 {/ S
可是如今连中文维基也部署了lua脚本。都有一个专门的名字空间:模块(module)。, W2 x4 R6 I5 t5 n" [; o( a
调用 {{#invoke| 模块名 |函数名}}就可以在服务器运行那个模块的指定函数。
; N' h' U, `! K1 s/ ?0 g& I' Y& n. E3 s/ \
加之之前的解析器写的不咋样,排个错超级麻烦,所以我打算重写,最好实现维基的lua运行环境。7 J! ^  @7 i8 x* E- x

4 m6 D# G0 w; S" P+ t) O这是第二次延期了,所以专门开个帖说下。
! O( A- j( ~4 v( U( q1 A
' H" L$ `- O7 B  A: X+ N大家也可以说下你们的期望下限,说下满足哪些功能就够了。到时我好优先处理。
! Z. B8 l9 X5 X2 z" `) {& h; d意见收集日期截至1月1日。到时我说不定就回家了。家里没网的。

评分

1

查看全部评分

该用户从未签到

 楼主| 发表于 2013-12-20 15:45:34 | 显示全部楼层
本帖最后由 惟吾无为 于 2013-12-30 18:56 编辑 9 U' `' z, Z$ _5 Z1 v: A  I

6 k: M4 B$ J: e7 J4 c$ Z一些细节或者备注。有人可能希望知道。
1 a0 g5 _2 x; N# b1. 1小时解析转储。
/ D/ |8 w) H1 ^$ |4 C7 Y# Y* 处理解压后的单个xml文件. 大小好像是4196M& d5 L7 k4 U3 X) P9 }
* lua只能使用单核, 我的cpu 1.6 GHz. 你们的高些会快些.: Z( {: h* Q7 N% L7 E: Y3 X
* 内存使用近1G, 峰值可能1.3G. 我的总内存3.5G. 可用3G. 你们的内存应该够吧?
. g# @2 j9 M" q, a4 \* 处理了 各种列表(\n[*#:; =-]), 链接, 粗斜体, 表格, 2 L- I0 Z; `: K
* 模板未处理, 公式未处理. 引用未处理, 分类未处理.
/ g& p( Y* @) S+ f  Z) @9 Z+ o* 没有字词转换. 所以还是繁简混合的.% B( G' \, i5 ^9 v0 {7 ]
1 q) y9 I9 z3 q2 {. C
2. 数学公式 (update@20131223)
& |4 c: s8 g' ^4 u( L4 S6 ~) V我打算先写出个简单的解析器. 只要支持基本格式就够了. 并针对enwiki做下优化., _+ h$ \0 c8 [. ~
* 调用texvc渲染公式为png.
3 k) c% R) D! O5 n" d! V% [2 {* 公式预处理: 替换连续的空白字符([ \t\n]+)为单个空格( ). 并去掉前导空格. 后缀不处理.
( v4 t6 P8 h! `4 i$ v2 V* 可以读取转储文件或公式列表, 生成公式的md5值对照表(hashfile)及其图片.; N' M, M% t# c, u
* 解析器需要先缓存 公式md5对照表(hashfile) 才能生成图片链接.
5 Z( d' ]0 b6 L* 未缓存的公式会临时解析, 失败的直接丢弃. 不会导致解析中断.* @9 q# _6 O. K6 P# e$ ?  i6 v
* 目前公式转换器仅使用单核. 我的电脑转换7.3w个公式为图片花了近2个小时.# T% a/ p. q* I3 O3 ~, o5 q
* 12.24测试使用多核(我的4核). 结果如下. 99.88% | time: 39m04s,     3s | formula ok:  85036 error:  109 dup:38661(根据我的预处理方式发现的重复公式)
2 f9 U" T  S" z" w+ ]7 a2 N     实际生成图片73110(我暂时没办法实现texvc的预处理过程, 所以重复的有85036-73110个). ) m' j2 B) L- ^& X7 c* |9 ^
     这个使用多核是通过连续创建 逻辑cpu个数*2 的进程来实现的. 我的lua脚本还是单核的. 依次读取那些进程的输出(会等待进程结束), 所以花费的时间大于半小时.
- Y" e6 ~% Z) I' D* 12.24-17:00 优化了下, 好像之前的有些重复公式没找到. 100.03% | time: 33m50s,     0s | formula write:  75392 error: 104 dup:  48309
5 y  S+ m3 D" V. @  u3 Z; I. X     当然, 前面的100.03%. 就无视了吧..." }9 s0 g. a( V# j2 F6 a0 U

% }  v/ G) ~4 U( Y9 O3. 多文件支持(update@20131228)
- [9 ^* h4 }( `, o- F: z之前的脚本不支持多文件. 这几天总算在原有的基础上加入多文件支持了.
/ v9 g; U1 r& N! B+ h: C! j2 _今天测试了enwiki的数学公式. 结果tmpfs连续两次因为inode用尽而"空间不足". 这次才终于发现不是因为内存用尽... 惭愧. 今天一天算是浪费了...' p8 u0 X4 B/ @; L5 n- A3 L. p
enwiki 公式转图片的进度 72.91% | time:  2h15m, 50m09s | formula write: 219013 error: 243 dup: 125078
, Z( _8 t( ]* V) V我现在又重新开始转了. 又要重复读一遍所有的xml文件... 估计又得一个半小时才能完成...
( Z9 G3 R, A! X" r, S4 x9 t7 |. }/ L+ Y; O* L& {
解析器也加入多文件支持了. 严格按照参数所给的文件顺序读取. 用户可自行调整文件顺序.7 w* s2 f6 [3 @% Z: M+ x
解析器仍是单线程的, 但可开多个进程, 各自解析不同的xml.
/ g( [# a4 Y% M; M; o5 \( a9 F; L- o- }
我这几天也写好了xml分割脚本和文本合并脚本.! G. F- a5 `; C% P9 R7 _* i
7 |, X# ]8 D) w4 L; B# z0 B2 w2 ~+ f  X
4. 危机(update@20131229)
" q7 n0 r" y5 D( j1. lua默认不支持大文件. 大于2G的没法正常操作. 我的lua是自己编译的, 开启了大文件支持...! \# t( I8 w& s
2. 还有dofile时的路径转换也没考虑到windows...文件打开时没加b标记. 也可能有问题... 我会尽量照顾下windows用户的./ k" X6 R6 D! i4 W6 N$ x' Z- t

3 j; X- {3 n  c  h$ N5. 新的希望(update@20131230)
; _- \# y* u4 V  \* x经过4个小时的努力, 终于在18:20编译出了支持大文件读写的windows版lua.1 j7 u/ A2 d# s4 b& h$ t
$ y; d- d. O' U3 V
...
  • TA的每日心情
    开心
    2022-11-10 09:48
  • 签到天数: 466 天

    [LV.9]以坛为家II

    发表于 2013-12-22 21:20:22 | 显示全部楼层
    我对这些不太懂,有需求的说说建议啊!
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2024-5-2 16:13 , Processed in 0.037105 second(s), 13 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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