lucene.net搜索--------索引详解
lucene.net索引建立成功以后我们会看到索引目录会添加很多文件,如图
我这里对部分文件做下介绍,大家只需要了解即可:
1、索引的segment 每个segment代表lucene的一个完整索引段,建立索引后必须存在的一个文件。
2、.fnm格式文件 包含 Document中所有Field名称
3、.fdx和.fdt格式文件 用于存储具有store.yes属性的field的数据的相关信息
4、.tii和.tis格式文件 .tii存储分词后term的索引文件,标明了每个.tis文件中词条的位置
5、.cfs格式 设置了usercompoundfile属性后就会有这个文件了
有人搜索的时候常常会报“找不到segments文件”类似的错误,是引文还没有建立索引,需要重新新建索引
下面介绍几个建立索引时的参数,可以帮助索引建立和优化查询
1、合并英子 mergefactor
当索引不断添加,索引达到一定数量时对索引中的segment进行合并
mergefactor取值较大时适合批量向索引添加数据,适合大量数据,取值小时适用小数据,间歇性向索引添加文档
2、maxmergedocs
限制segment的数量
maxmergedocs取值较大时适合批量向索引添加数据,适合大量数据,取值小时适用小数据,间歇性向索引添加文档
3、minmergedocs maxbuffereddos
这两个是同样的效果,索引保存到硬盘前肯定是要先保存到内容中,这里设置保存在内容中的文档数量
当其值较大时候需要更多的内容,较小的时候就发生频繁的IO操作
索引的合并
1 | public IndexWriter(Directory d, Analyzer a, bool create); |
创建索引的时候第一个参数是Directory类型,是lucene自带的工具,有两个子类,分别是RAMDirector和FSDirectoy
RAMDirector索引存放在内容,速度快,但是不够稳定,存放数量少
FSDirectoy存放在硬盘,速度较慢,但是存放数量多,比较稳定
建立索引时推荐先使用RAMDirector然后合并到FSDirectoy
合并索引使用
1 2 | fsdirwrite.AddIndexes( new Lucene.Net.Store.Directory[]{ramdir}); fsdirwrite.Close(); //一定要关闭 |
optimize()
索引优化,提高搜索的速度,合并segment。
本文主要讲述了在建立索引过程中的一些优化技巧,这里上存一段代码参考
下载地址:https://files.cnblogs.com/joylee/luceneindex.rar
作者:joylee
出处:https://www.cnblogs.com/joylee/archive/2009/11/28/1612438.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个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 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?