Lucene 写入一个文档到该文档可搜索延迟是多少?

摘要:
我看到了Lucene的原始版本。1.4.3得出的结论是,新写入的文档将首先写入内存,只有在达到某个阈值后才会刷新到磁盘中。可以搜索的数据由最初定义IndexSearcher时磁盘中的段数据确定。如果您希望立即搜索新编写的文档,则需要刷新搜索客户端IndexSearcher。在1.4.3中,我认为我们必须调用IndexReader。open()方法再次刷新。

我看的是最初版的lucene,1.4.3

结论是新写入的文档会先写入内存中,只有当到达一定阈值后才会刷新进磁盘,而搜索可以搜索到的数据由最初定义IndexSearcher时磁盘里的段数据决定,如果想要新写入的文档能立马被搜索到,则需要将搜索客户端IndexSearcher刷新,在1.4.3里我看只有重新调用IndexReader.open()方法来刷新。

新文档写入的逻辑:

  每写入一个新的文档会在内存中新建一个段来放这个文档

  lucene会定义一个最小合并文档数和最大合并文档数,默认最小合并文档数是10,最大合并文档数是Integer.MAX

  在内存中会保存当前整个索引所有段的一个列表,这个列表像一个栈,后来的在最上面,而包含新建文档的段当然也在最上面,由于这样的段只包含一个文档,所以正常的流程是当添加了10个文档后开始进行合并(这个合并策略在代码里叫增量合并,就是先合并10个文档,再合并 10 * 10(合并因子) = 100 个文档,然后合并 10*10*10 = 1000个文档)

  合并操作会新建一个段(每次新建段,段的前缀都是全局递增)来存放这些需要合并段的数据,在合并以后会将合并后的段写入磁盘

免责声明:文章转载自《Lucene 写入一个文档到该文档可搜索延迟是多少?》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Lucene为什么要加Segment概念爬虫03 /代理、cookie处理、模拟登录、提升爬虫效率下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

lucene vs zoie

前段时间使用zoie的perf包内的性能测试代码对lucene和zoie的实时搜索部分做了对比测试,结果出乎我意料,从数据上看,lucene比zoie更适合于一般实时搜索的场景。 zoie的perf从四个方面来评测:search lancenty, indexing lancenty, indexing event rate, indexing event...

Lucene.net 基本示例 《第一篇》

Lucene.net 基本示例 《第一篇》 Lucene.net是java平台搜索插件Lucene的移植版。它的主要用于开发搜索引擎,站内搜索等。 开篇之前,写个最简单的DEMO,让自己先体验下Lucene.net的魅力,顺便搭建环境。 static void Main(string[] args) {...

ES笔记四:索引操作

一. index 1. 命名规则 _index 命名必须小写,不能以下划线开头,不能包含逗号、 _type 命名可以是大写或者小写,但是不能以下划线或者句号开头,不应该包含逗号, 并且长度限制为256个字符、 _id 唯一确定的文档,要么提供自己的_id ,要么es会自动生成 2.创建索引 如果你想禁止自动创建索引,在elastics...

Lucene2.9.1使用小结(同样适用于Lucene 3.0 )

【++yong的博客地址:http://blog.csdn.net/qjyong】 开源全文搜索工具包Lucene2.9.1的使用。 1. 搭建Lucene的开发环境:在classpath中添加lucene-core-2.9.1.jar包2. 全文搜索的两个工作: 建立索引文件,搜索索引.3. Lucene的索引文件逻辑结构1) 索引(Index)由若...

lucene合并测试的总结

1 查询的总时间等于每个segment查询时间的总和 2 合并的步骤 (1)做flush操作的先生成一个新的segment (2)检查在新segment之前已经存在的segment的数量是否大于maxmerge(默认是10个),大于了进行合并 (3)合并完成又会生成一个新的segment,然后把前面10个segment删除。 每次追加46W条数...

solr配置-Solrconfig.xml

可参考配置:http://wiki.apache.org/solr/SolrConfigXml lib    <lib> 标签用于引入solr引用SolrPlugins的jar包,当dir对应的目录不存在时,solr会忽略此, <lib dir="../../../contrib/extraction/lib"regex=".*.j...