ELK基本都用过,一条日志在入库时,它的具体内容并不会被真实保存在倒排索引中。 在日志入库之前,会先进行分词,过滤掉无用符号等分隔词,找出文档中每个关键词(Term)在文档中的位置及频率权重;然后,将这些关键词保存在 Term Index 以及 Term Dictionary 内;最后,将每个关键词对应的文档 ID 和权重、位置等信息排序合并到 Posting List 中进行保存。通过上述三个结构就实现了一个优化磁盘 IO 的倒排索引。 而查询时,Elasticsearch 会将用户输入的关键字通过分词解析出来,在内存中的 Term Index 单词索引查找到对应 Term Dictionary 字典的索引所在磁盘的 block。接着,由 Term Dictionary 找到对关键词对应的所有相关文档 DocId 及权重,并根据保存的信息和权重算法对查询结果进行排序返回结果。
相关推荐
暮色妖娆丶1 小时前
不过是吃了几年互联网红利罢了,我高估了自己UrbanJazzerati2 小时前
Python Scrapling:小白也能轻松掌握的现代网页抓取工具老张的码2 小时前
飞书 × OpenClaw 接入指南希克厉2 小时前
记录安装wsl2踩的一个坑zone77392 小时前
004:RAG 入门-LangChain读取PDF漫霂2 小时前
基于redis实现登录校验zone77392 小时前
005:RAG 入门-LangChain读取表格数据用户7344028193422 小时前
mysql如何存储boolean类型golang学习记2 小时前
Fiber v3 适配器模式:17 种写法随便用,老代码"即插即用"🔌用户020742201752 小时前
从零到一:用 Rust 实现一个简单的区块链