单字字典倒排式关联索引的静态资源搜索方案。
曾经我做过RavelloH/RPageSearch,也是静态站的全文搜索引擎,实现方式是先把所有资源拉取到本地,由js进行搜索。优点是只需要静态资源托管,不需要服务器参与运算,但是效率太低,内容多了之后文件大小爆炸。
这个项目是一个改进版,将每个字作为键来索引文章,会生成<全文中字的种类>个json,每个json中记录某个字在某篇文章的某个部分出现,前端只需要请求<搜索词长度>次即可进行搜索,而不用获取全文。
尤其适合中文这种字种多的语言,对纯英文用处不大。主要对“不是每篇文章都能用到”的字有效果,且作为索引,只能告诉你哪个内容中有你输入的搜索词,要获取那篇文章的全文需要再自行请求。
典型情况下,中文新闻语料库RavelloH/EverydayNews的data文件夹大小为1,738,276字节(1.65MB)时,会生成25,184,701(24.0MB)字节的索引,包含3773个json文件,平均每个文件的大小为6674字节(6.51KB),需要请求的文件大小降低至原来的(字数*6674)/1738276。典型赋值,字数为2-10时,降低至原来的0.0076-0.0383倍,提升高达2610%-13157%,效果显著。