Hubble.net 持久化方面3个重大改进
Author:Eaglet
1.持久的DocId
Hubble.net 采用的持久的 DocId,即DocId 永远不会改变,而 lucene.net 的 DocId 是动态的。这导致Lucene无法用DocId 做主键和别的数据进行整合 所以Lucene 的全文内容和全文索引必须要建在一起,不能单独只建索引,而通过DocId从其他的存储组件(如数据库中)获取全文内容。系统整合能力不够灵活。
2. 元数据快速修改
元数据(如一些价格,时间的数据)和全文在同一记录中,在构建垂直搜索中,全文往往很少改动,但元数据则可能经常变动。Lucene.net 如果要修改元数据,必须将整条记录删除,然后重新再添加,这样需要将大量的全文重新分词并存储,效率低下。 而Hubble.net 将元数据单独进行存储,修改元数据不需要删除记录重新添加,而是只修改对应记录的元数据就可以了。不影响全文索引。
3. 高效的增量索引
Lucene每增量一次就会生成至少一个Segment,增量完后,为保证查询效率,需要优化,这导致哪怕很小的增量,都要优化一次。如果数据量很大,极端情况下,只增加一条记录,就要重新对上百万的记录重新整理一次,极其耗时。Hubble.net 进行了改进,优化时尽量避免整理大的索引文件,大大提高了增量索引时优化的效率。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述