将文件夹和子文件夹的路径导入更快的数据库引擎

Import path of folders and subfolders into a faster database engine

我刚才创建了一个 proxy/crawler,它最终记录了很多文件。我认为这将是一个简单且可行的解决方案,但我意识到一旦它接近 1 000 000 个文件,我就会遇到越来越多的问题。搜索数据库最多可能需要 15 秒,我在上周经历了两次服务器崩溃。我测试了重新启动 apache2,在终端中搜索 "test" 和垃圾邮件 "free -m" 命令。我注意到 ram 马上就升得很高,可能是 ram 导致了崩溃。我不确定是什么让搜索引擎变快,但真的很想知道。

所有文件都存储在:

database/*/*/*.txt

并使用此代码完成所有操作:

$files = array();
$dir = '/var/www/html/database';
foreach (glob($dir . '/*/*/*.txt', GLOB_NOCHECK) as $path) {
    $title = basename($path, ".txt");
    if(strripos($title,$search) !== false){
        array_push( $files, $path );
    }
}

代码要长得多,但我只是想展示其工作原理的基础知识。

每个文件包含大约 6 行有用的信息。

所以我开始寻找解决方案,并思考。如果我将搜索解析为比 PHP 搜索速度更快的东西,比如 Java 或 C,会怎样?啊啊,那会很乱.. 所以我想到了MySQL。但是我应该如何将所有文件从文件夹和子文件夹传输到 MySQL?服务器是 运行 Debian,配备 4 GB 内存和 i3 处理器。

我还没有采取任何行动,因为 MySQL 令人困惑并且没有找到任何其他解决方案。我该怎么办?

这个问题要求太高了。这不仅仅是点击一下即可。我以为更多人有这样的问题,但后来我发现每个人都在使用预制搜索引擎。

我最终将整个数据库下载到我的 windows 计算机,并用 c# 编写一个程序,自动遍历所有文件,获取内容并将其 POST 到我的 elasticsearch 数据库安装在 Debian 服务器上。我可能应该创建一个文件到文件转换器而不是一个文件到纯 POST 请求。

这样做的缺点是速度不太快,将 700 000 个文件传输到数据库需要 2 个小时。

程序不会公开发布,因为我在文件中使用了特定的字符串。所以这比我预期的要难得多。

C#应用结果: