Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
Noromon opened this issue Mar 18, 2022 · 4 comments
Open

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

Noromon opened this issue Mar 18, 2022 · 4 comments

Comments

@Noromon
Copy link

Noromon commented Mar 18, 2022

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

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

@firefoxchan
Copy link
Owner

或者介绍一下程序如何从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 就行

@Noromon
Copy link
Author

Noromon commented Mar 19, 2022

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

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

@Noromon
Copy link
Author

Noromon commented Mar 21, 2022

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

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

@firefoxchan
Copy link
Owner

后端查询数据库里的信息

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

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

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants