2024年8月31日
摘要: 今天复习前几年在项目过程中积累的各类技术案例,有一个小的 coredump 案例,当时小组里几位较资深的同事都没看出来,后面是我周末查了两三个小时解决掉的,今天再做一次系统的总结,给出一个复现的案例代码,案例代码比较简单,便于学习理解。 1. 简介 原则:临时对象不应该被 lambda 引用捕获,因 阅读全文
posted @ 2024-08-31 20:11 烛秋 阅读(255) 评论(0) 推荐(2) 编辑
  2024年7月6日
摘要: 1. 背景 1.1. 接手老系统 最近我们又接手了一套老系统,老系统的迭代效率和稳定性较差,我们打算做重构改造,但重构周期较长,在改造完成之前还有大量的需求迭代。因此我们打算先从稳定性和迭代效率出发做一些微小的升级,其中一项效率提升便是升级编译工具 和 GCC 版本。 老系统使用 Autotools 阅读全文
posted @ 2024-07-06 21:14 烛秋 阅读(1398) 评论(13) 推荐(9) 编辑
  2023年10月29日
摘要: 字符串分割是很常见的功能,通常其实现代码也很简洁,这就使得开发者容易忽略其性能,写出非最佳性能的代码,譬如:没有使用现代 C++ 中的 string_view、对遍历过程没有精细考虑。通过精细的控制计算量以及应用 SIMD 指令可以获得比较好的收益,特别是 SIMD 指令在任意多分隔符场景下性能优化效果非常明显。 阅读全文
posted @ 2023-10-29 22:00 烛秋 阅读(2561) 评论(7) 推荐(10) 编辑
  2019年4月14日
摘要: 本文主要介绍B+树的Copy-On-Write,包括由来、设计思路和核心源码实现(以Xapian源码为例)。中文的互联网世界里,对B树、B+树的科普介绍很丰富,但对它们在工业界的实际使用却几乎没有相关介绍文章,本文既是总结分享,也是资料索引。 在阅读本文之前需要先对B+树有概念上的认识,可以阅读wi 阅读全文
posted @ 2019-04-14 22:58 烛秋 阅读(3001) 评论(0) 推荐(1) 编辑
  2019年3月23日
摘要: 总结今天遇到的一个so库链接、运行问题。 这几天修改了xapian的源码,重新编译so库,再重新编译之前的demo程序,跑起来后却发现执行的函数并非我修改过的,使用的还是老版本。折腾了一会儿,发现是因为/usr/local/lib目录中含有同名so库导致。这里记录下正确的解决思路。 1 确保链接到了 阅读全文
posted @ 2019-03-23 00:25 烛秋 阅读(2238) 评论(0) 推荐(2) 编辑
  2019年3月18日
摘要: 本文属于文档检索过程分析的一部分,重点分析文档匹配百分比(percent)的计算过程。 1 percent是什么? 我们之前分析的检索demo: 2 为什么需要percent? 先说一下背景,做过搜索的人应该都知道BM25算法,这也是xapian内部默认的相关性打分算法,它是一个针对term做打分的 阅读全文
posted @ 2019-03-18 21:03 烛秋 阅读(720) 评论(0) 推荐(0) 编辑
  2019年3月10日
摘要: 本文是Xapian检索过程的分析,本文内容中源码比较多。检索过程,总的来说就是拉取倒排链,取得合法doc,然后做打分排序的过程。 1 理论分析 1.1 检索语法 面对不同的检索业务,我们会有多种检索需求,譬如:要求A term和B term都在Doc中出现;要求A term或者B term任意在Do 阅读全文
posted @ 2019-03-10 23:58 烛秋 阅读(1438) 评论(0) 推荐(0) 编辑
  2019年3月3日
摘要: 本文主要记录Xapian的内存索引在添加文档过程中,做了哪些事情。 内容主要为函数执行过程中的流水线。 demo代码: 1.创建并填充Document 定义好文档对象,使用add_posting接口,添加term,以及对应的position、wdfinc; 内部实现细节: 1.1 先尝试读取doc已 阅读全文
posted @ 2019-03-03 22:16 烛秋 阅读(821) 评论(0) 推荐(0) 编辑
  2019年2月22日
摘要: 关键字:xapian、内存索引 xapian除了提供用于生产环境的磁盘索引,也提供了内存索引(InMemoryDatabase)。内存索引。我们可以通过观察内存索引的设计,来了解xapian的设计思路。 1 用途 官方文档说法: “inmemory, This type is a database 阅读全文
posted @ 2019-02-22 12:49 烛秋 阅读(1183) 评论(0) 推荐(0) 编辑
  2019年2月19日
摘要: 关键字:搜索引擎、Xapian 一篇拖了两三年的入门总结文章,今天发出来,一方面是自己的总结,另一方面是给自己和他人的备忘。读者需要对搜索引擎有初步了解,譬如了解倒排、term、doc、相似度打分等概念。 Xapian是一个C++搜索引擎内核,提供了类似Lucene的功能,功能没有Lucene丰富, 阅读全文
posted @ 2019-02-19 18:52 烛秋 阅读(6092) 评论(1) 推荐(1) 编辑