如何自己搞一个维基百科?

公众号程序猿DD

共 1595字,需浏览 4分钟

 ·

2021-09-13 18:08

大家平时查询资料都喜欢用什么搜索工具呢?

也许很多人都是百度吧,但是也有一部分小伙伴习惯使用维基百科~

维基百科(Wikipedia),又称人民的百科全书,是来自世界各地的人民用不同的语言共同创建的百科全书。

它基于wiki技术,强调自由、免费、内容开放,任何人都可以编辑百科全书中的任何条目。其宗旨是为全人类提供一个动态的、可自由访问和编辑的全球知识体。

你可以把它看作是一个纯文科类的百度百科的升级国际版,毕竟人们常说:北冥有鱼,其名为鲲。鲲之大,不知其几千里也,错了错了,拿错台词了,应该是这句,维基百科,海纳百川,有容奶大

哦不不不,是有容乃大~~小编最近那个编码太辛苦了(啥啥东西看多了),各位理解理解~

那么大家有没有想过自己搭建一个静态版本的维基百科呢?

当然可以了,今天给大家带来的就是GitHub上的一个开源项目,教你如何使用CSS、JS、WASM和SQLite来搭建这个静态百科~

项目的核心技术要点在于 将SQLite (written in C) 编译成 WebAssembly,这样就可以使用 sql.js 读取 sqlite 的数据库文件。

不过项目还有点小瑕疵,比如,有时候页面会在加载的时候自动卡住,这个时候只能刷新页面解决。作者似乎还没找到一个合适的在SQLite HttpVFS库中处理正在进行的请求的方法,如果有小伙伴是个中高手也可以自己一改哟~

整体程序运行,只需要5个步骤:

1、获取维基百科转储文件

首先去维基百科的dump下载网站,下载所需要的语种和时间的dump文件。然后从中提取xml文件。

2、将xml文件加载进SQLite数据库

运行npm install,将xml文件传输到转换器中cat "/path/to/enwiki.xml" | node ./scripts/xml_to_sqlite.js /path/to/output/folder/en.db

这样就会在指定的目录和路径处创建新的SQLite文件。不过往往这需要不小的硬盘空间(往往需要几百G)和长达数小时的时间消耗。

可以运行./scripts/sqlite3 /path/to/output/folder/en.db看数据准备情况。

3、构建前端

如果小伙伴想测试下SQLite db ,可以运行 npm run build 和 npm run serve,如果小伙伴用的是mac,可以将nginx.conf替换系统里的/usr/local/etc/nginx/nginx.conf

小伙伴要确保一点,调整db.js中的dev URL,使其指向自己本地主机“en.db”。而不是将db文件放到dist文件夹中,然后执行npm run dev。切记切记~

运行npm run build,系统会将"src/" 编译成 "dist/"。

4、将“dist/”和“db/”部署到静态文件主机

将文件上传,然后在静态主机上设置跨域CORS(CORS.example),最后,调整db.js中的URL。这样,应用程序就可以部署了。

5、重复完成所有dump文件的操作

如果下载了不同的dump文件,只需要重复1-4步加入db.js就可以了。

那最终的效果如下:

我们可以看到右上角可以选择语种,不同的语种只能在对应的库里搜索,就比如你在English库里搜索二傻子,是不会有结果的,同理你在Chinese库里所搜small也是没有。

各位天才小伙伴,一起来学习下这个项目吧!项目地址如下:

点击下方卡片,关注公众号“TJ君

回复“维基”,获取仓库地址

浏览 79
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报