栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Segment读取

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Segment读取

路径:

org.apache.lucene.search.IndexSearcher  IndexSearcher

org.apache.lucene.index.CompositeReader getContext

org.apache.lucene.index.CompositeReaderContext create

org.apache.lucene.index.CompositeReaderContext build 

    private IndexReaderContext build(CompositeReaderContext parent, IndexReader reader, int ord, int docbase) {
      if (reader instanceof LeafReader) {
        final LeafReader ar = (LeafReader) reader;
        final LeafReaderContext atomic = new LeafReaderContext(parent, ar, ord, docbase, leaves.size(), leafDocbase);
        leaves.add(atomic);
        leafDocbase += reader.maxDoc();
        return atomic;
      } else {
        final CompositeReader cr = (CompositeReader) reader;
        final List sequentialSubReaders = cr.getSequentialSubReaders();
        final List children = Arrays.asList(new IndexReaderContext[sequentialSubReaders.size()]);
        final CompositeReaderContext newParent;
        if (parent == null) {
          newParent = new CompositeReaderContext(cr, children, leaves);
        } else {
          newParent = new CompositeReaderContext(parent, cr, ord, docbase, children);
        }
        // docbase是累加来的
        int newDocbase = 0;
        for (int i = 0, c = sequentialSubReaders.size(); i < c; i++) {
          final IndexReader r = sequentialSubReaders.get(i);
            // 此处有个递归
          children.set(i, build(newParent, r, i, newDocbase));
          newDocbase += r.maxDoc();
        }
        assert newDocbase == cr.maxDoc();
        return newParent;
      }
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/584929.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号