当前位置:2019全年资料六合天机诗 > 取索引数 >

如何读取Lucene索引数据

  千锋教育专注HTML5前端、Java开发、Python全栈、UI设计、物联网嵌入式、区块链、大数据、人工智能、软件测试、PHP、云计算、信息安全、Unity游戏开发、红帽RHCE认证培训服务简单地说luncence的索引数据是通过调用IndexReader接口读取的。

  lucene的索引一般都比较大,索引数据采用分目录存储,每个存储目录具有一个DocID,因此在实际的使用时需要依次读取所有的目录拼接后再以分页的方式读取。

  展开全部方法一:依次根据每个docid获取文档然后写入txt中,这样的以来,就避免了内存不足的缺点,但是这样单条读取的话,速度上可能会慢一点,但能满足需求无可厚非。伪代码如下

  Lucene的分页,总的来说有两种形式,小编总结如下图表格。(如果存在不合适之处,欢迎指正!)

  1 在ScoresDocs里进行分页 无需再次查询索引,速度很快 在海量数据时,会内存溢出

  2 利用SearchAfter,再次查询分页 适合大批量数据的分页 再次查询,速度相对慢一点,但可以利用缓存弥补

  从上图我们可以分析出,ScoreDocs适合在数据量不是很大的场景下进行分页,而SearchAfter则都适合,所以,我们要根据自己的业务需求,合理的选出适合自己的分页方式。

  在我们了解这2中分页技术的优缺点之后,我们再来探讨下上面那个读2亿数据存入txt文本里,在这里,SocreDocs不适合这种场景,当然如果你内存足够大的话,可以尝试下,通用分页分批读取的方式,可以提升我们的写入效率,效果是比单条单条读取的速度是要快很多的。虽然ScoresDocs的分页方式在本需求上不适合,但是作为示例,下面小编给出使用ScoreDocs进行分页的代码:

  page(search,paged);//分页操作,此步是传到方法里对数据做处理的

  page(search,paged);//分页操作,此步是传到方法里对数据做处理的

  知道合伙人软件行家采纳数:33448获赞数:30290从事多年系统运维,喜欢编写各种小程序和脚本。向TA提问展开全部IndexReader有一个“工厂模式”的static interface——IndexReader.Open。定义如下:

  #0001~#0003),然后看一下有几个段:如果只有一个,那么可能是优化过的,直接读取这一个段就可以(#0008);否则需要一次读入各个段

  #0040~#0061可以快速的读取某篇文档中出现的term和相应的频度。但是这部分需要在建索引时,设置storeTermVector为true。比如

http://miraclemms.com/qusuoyinshu/145.html
点击次数:??更新时间2019-06-03??【打印此页】??【关闭
  • Copyright © 2002-2017 DEDECMS. 织梦科技 版权所有  
  • 点击这里给我发消息
在线交流 
客服咨询
【我们的专业】
【效果的保证】
【百度百科】
【因为有我】
【所以精彩】