local-ehentai icon indicating copy to clipboard operation
local-ehentai copied to clipboard

希望能支持将sqlite数据库作为数据源

Open Noromon opened this issue 2 years ago • 4 comments

关站风波之时我写了一个自动更新元数据库的程序,并且已经用来维护了本地数据库几年了。当时因为处理json会把电脑内存全部吃光导致操作失败,所以改用了sqlite实现,并把gdata.json的数据迁到了sqlite上 现在希望能使用这个软件来检索我自己的数据库,但是我现在还是go小白,看源码很头大(@_@)。 所以如果作者可以添加这个功能支持就好了,我可以提供数据库的表定义/数据结构

或者介绍一下程序如何从json中读取数据,以及搜索的实现思路

Noromon avatar Mar 18 '22 09:03 Noromon

或者介绍一下程序如何从json中读取数据,以及搜索的实现思路

小改的话,把这一行的函数替换成你的读sqlite的函数就可以了
https://github.com/firefoxchan/local-ehentai/blob/v0.0.6/pkg/ehloader/index.go#L24

这个函数做的事情跟下面这个函数是一样的
https://github.com/firefoxchan/local-ehentai/blob/v0.0.6/pkg/ehloader/index_json_native.go

基本上来说就是解出来元数据,每个元数据都调用一下 handleJGallery 就行

firefoxchan avatar Mar 18 '22 17:03 firefoxchan

试图读了一下源码,感觉web上的操作全是操作在内存里的gallery集合上...可能真的需要大改 我目前的想法是每次web要获取画廊信息的时候就把请求传给后端,后端查询数据库里的信息,并临时组织一个gallery集合传回给web,再让web把这些信息展示出来 所以希望能介绍一下搜索时(以及不搜索时,也就是搜索框没有东西时)web向搜索引擎传了些啥以及拿到了啥,以及web是怎么将gallery信息展示在网页上的 (如果有封装好的通信接口就好了X_X)

大概是想把 Web <-> 原搜索后端 <-> 内存Gallery集合 <- gdata.json 换成 Web <-> sql搜索后端 <-> 数据库

Noromon avatar Mar 19 '22 04:03 Noromon

开发了一个把数据库转换回json的小工具作为妥协

虽然目前该项目的实现方式占用大量内存仍然是个问题(127w个画廊,不含种子信息,生成json文件大小1g,占用6g内存),但至少现在能以妥协的方式用起来了( ・ิω・ิ)

Noromon avatar Mar 21 '22 03:03 Noromon

后端查询数据库里的信息

要改成这样的话基本等于重写了,建议开一个新的repo…

虽然目前该项目的实现方式占用大量内存仍然是个问题

是个问题,早期写这个的时候没有考虑内存优化,内存里建立索引的时候很多数据是可以复用的(比如字符串底层的[]byte),后来eh恢复了就把优化内存这事鸽了(

如果内存实在吃紧的话,可以考虑把分词以及文件索引相关的代码注释了,这样会占用少一些

firefoxchan avatar Mar 21 '22 16:03 firefoxchan