C++之基于正倒排索引的Boost搜索引擎项目日志+server代码及详解

C++之基于正倒排索引的Boost搜索引擎项目日志+server代码及详解
首先为了更好的查看自己的项目状况,日志是我们做项目可以说必须要写的一部分。而server部分我们可以理解为写了这么多的类就是为了在这里使用。

1. 日志

__FILE____LINE__是 C/C++ 编译器预定义的特殊宏

__FILE__

它会被编译器自动替换为当前代码所在源文件的路径或文件名(字符串类型)。

在日志函数中,它的作用是记录 “这条日志是从哪个文件输出的”。

例如:如果在 test.cpp 中调用 LOG1 宏,__FILE__ 就会被替换为 "test.cpp"(具体可能包含路径,取决于编译器),最终日志中会显示 [test.cpp : ...]

__LINE__

它会被编译器自动替换为当前代码所在的行号(整数类型)。

在日志函数中,它的作用是记录 “这条日志是从文件的哪一行输出的”。

例如:如果 LOG1 宏调用写在 test.cpp 的第 25 行,__LINE__ 就会被替换为 25,最终日志中会显示 [test.cpp : 25]

然后创建一个log1函数,一个一个打印出外面想要看到的信息。

#pragma once #include <iostream> #include <string> #include <ctime> #define NORMAL 1 #define WARNING 2 #define DEBUG 3 #define FATAL 4 #define LOG1(LEVEL, MESSAGE) log1(#LEVEL, MESSAGE, __FILE__, __LINE__) void log1(std::string level, std::string message, std::string file, int line) { std::cout << "[" << level << "]" << "[" << time(nullptr) << "]" << "[" << message << "]" << "[" << file << " : " << line << "]" << std::endl; } 

2.server.cc

"data/raw_html/raw.txt这个路径下存的是我们的数据源,./wwwroot/可以理解为前段网页的代码。

queue是要搜索的关键字,json_string是返回给用户的搜索结果。

接下来就是先实例化一个Searcher类,然后调用InitSearcher函数。这边使用fgets而不用cin是因为cin会忽略空格,而fgets可以整行读取。

 buffer[strlen(buffer)-1]=0;是因为用户在输入的时候会有换行符,我们要去掉这个。然后把处理后的结果交给query,然后调用Search函数,把经过处理后的结果交给json_string,然后输出。

#include"searcher.hpp" #include<iostream> #include<string> #include<cstdio> const std::string input="data/raw_html/raw.txt"; const std::string root_path = "./wwwroot"; int main() { ns_searcher::Searcher* search=new ns_searcher::Searcher(); search->InitSearcher(input); std::string query; std::string json_string; char buffer[1024]; while(1) { std::cout<<"Enter Search Query: "; //std::cin>>query; fgets(buffer,sizeof(buffer)-1,stdin); buffer[strlen(buffer)-1]=0; query=buffer; search->Search(query,&json_string); std::cout<<json_string<<std::endl; } return 0; }

Read more

【扣子Coze教程】“葬经人”动画工作流开源(附提示词)

【扣子Coze教程】“葬经人”动画工作流开源(附提示词)

最近扣子更新了大版本,送了很多积分,根本用不完。 于是我研究了下“葬经人”动画短视频,看能不能用工作流搞定,结果没一会跑通了,那还说啥,直接开源! 接下来就分享这个巨硬核的Coze工作流:一键生成“葬经人”风格动画短视频。 0代码,所有提示词均已给出,按步骤即可轻松复刻。 开始前,先简单介绍下这个“葬经人”博主,靠着清醒人性哲学短视频涨粉几十万,非常牛逼。 工作流完整截图: 节点看着有点多,别被吓到,没有代码,无非就是拖拉拽节点和填几个参数。 分段展示下工作流: 01 制作工作流 (1)登录扣子,创建一个工作流; 地址:https://www.coze.cn/ (2)设置开始节点参数; (3)添加一个大模型节点->重命名为文案生成->设置参数; 提示💡:都是按顺序在前一个节点后面添加(比如这一步添加的大模型连接在开始节点后)

By Ne0inhk

VS Code 编辑器 Git 工具 - 分支操作【保姆级教程】

VS Code 编辑器 Git 工具 - 分支操作 1、查看分支 2、分支提交记录 3、 以当前分支创建并发布分支 发布后 4、 切换分支 1. 切换分支时记得先提交当前分支的代码 2. 点击分支列表中的分支名称即可切换分支 5、 以某分支创建新分支 6、 合并分支 合并成功,branch1-1分支的test1.txt 合并到branch1分支 7、 变基分支 1. 变基操作时确保当前分支的代码已提交 2. 遇到代码冲突时选择适合的合并方式解决代码冲突,这里我选择【保留双方更改】 3. 变基一半不想变基了,放弃更改文件就行,或者进行文件回退重新选择合并方式 变基成功,branch1-1的提交合并到了branch1 8、 重命名分支 1. 重命名分支是命名当前分支 2. 选择重命名分支后一定要发布分支,不然远程分支名称未同步 9、

By Ne0inhk

最近爆火的 OpenClaw Skills 合集开源了!已收录 700+!

在介绍这份令人眼花缭乱的“武器库”之前,先给还不了解 OpenClaw 的朋友补个课。 简单来说,OpenClaw 是目前 GitHub 上最火的本地化 AI Agent 平台(前身是 Clawd/Moltbot)。不同于只能在网页里陪聊的 ChatGPT,OpenClaw 是一个运行在你电脑终端里的“数字管家”。 * 本地优先:直接运行在你的 Mac/Linux/Windows 上,数据不出本地,拥有 Docker 沙箱级安全保护。 * 全渠道接入:你可以通过 WhatsApp、Telegram、Slack 甚至 iMessage 随时指挥它。 * 行动派:它不只是给你建议,而是能直接读写文件、运行命令、调用 API。 如果说 OpenClaw 是一个强悍的操作系统,那么下面要介绍的

By Ne0inhk

Gitee完全新手教程

文章目录 * 🚀 Gitee完全新手教程 * 一、注册与准备 * 二、创建第一个仓库(详细步骤) * 步骤1:点击创建按钮 * 步骤2:填写基础信息 * 步骤3:关键设置 * 步骤4:创建完成 * 三、本地操作指南 * 1. 克隆仓库到本地 * 2. 日常工作流程 * 3. 常用命令总结 * 四、重要概念解释 * 1. 仓库(Repository) * 2. 分支(Branch) * 3. 提交(Commit) * 4. 推送(Push)和拉取(Pull) * 五、新手注意事项 ⚠️ * 🚫 绝对不要做 * ✅ 推荐做法 * 六、.gitignore模板示例 * 七、遇到问题怎么办? * 常见问题解决 * 八、学习路径建议

By Ne0inhk