亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? multisegmentreader.java

?? lucene-2.4.0 是一個(gè)全文收索的工具包
?? JAVA
?? 第 1 頁 / 共 2 頁
字號(hào):
package org.apache.lucene.index;/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License.  You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */import java.io.IOException;import java.util.Collection;import java.util.Collections;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.Map;import java.util.Set;import org.apache.lucene.document.Document;import org.apache.lucene.document.FieldSelector;import org.apache.lucene.store.Directory;/**  * An IndexReader which reads indexes with multiple segments. */class MultiSegmentReader extends DirectoryIndexReader {  protected SegmentReader[] subReaders;  private int[] starts;                           // 1st docno for each segment  private Map normsCache = new HashMap();  private int maxDoc = 0;  private int numDocs = -1;  private boolean hasDeletions = false;  /** Construct reading the named set of readers. */  MultiSegmentReader(Directory directory, SegmentInfos sis, boolean closeDirectory, boolean readOnly) throws IOException {    super(directory, sis, closeDirectory, readOnly);    // To reduce the chance of hitting FileNotFound    // (and having to retry), we open segments in    // reverse because IndexWriter merges & deletes    // the newest segments first.    SegmentReader[] readers = new SegmentReader[sis.size()];    for (int i = sis.size()-1; i >= 0; i--) {      try {        readers[i] = SegmentReader.get(readOnly, sis.info(i));      } catch (IOException e) {        // Close all readers we had opened:        for(i++;i<sis.size();i++) {          try {            readers[i].close();          } catch (IOException ignore) {            // keep going - we want to clean up as much as possible          }        }        throw e;      }    }    initialize(readers);  }  /** This contructor is only used for {@link #reopen()} */  MultiSegmentReader(Directory directory, SegmentInfos infos, boolean closeDirectory, SegmentReader[] oldReaders, int[] oldStarts, Map oldNormsCache, boolean readOnly) throws IOException {    super(directory, infos, closeDirectory, readOnly);    // we put the old SegmentReaders in a map, that allows us    // to lookup a reader using its segment name    Map segmentReaders = new HashMap();    if (oldReaders != null) {      // create a Map SegmentName->SegmentReader      for (int i = 0; i < oldReaders.length; i++) {        segmentReaders.put(oldReaders[i].getSegmentName(), new Integer(i));      }    }        SegmentReader[] newReaders = new SegmentReader[infos.size()];        // remember which readers are shared between the old and the re-opened    // MultiSegmentReader - we have to incRef those readers    boolean[] readerShared = new boolean[infos.size()];        for (int i = infos.size() - 1; i>=0; i--) {      // find SegmentReader for this segment      Integer oldReaderIndex = (Integer) segmentReaders.get(infos.info(i).name);      if (oldReaderIndex == null) {        // this is a new segment, no old SegmentReader can be reused        newReaders[i] = null;      } else {        // there is an old reader for this segment - we'll try to reopen it        newReaders[i] = oldReaders[oldReaderIndex.intValue()];      }      boolean success = false;      try {        SegmentReader newReader;        if (newReaders[i] == null || infos.info(i).getUseCompoundFile() != newReaders[i].getSegmentInfo().getUseCompoundFile()) {          // this is a new reader; in case we hit an exception we can close it safely          newReader = SegmentReader.get(readOnly, infos.info(i));        } else {          newReader = (SegmentReader) newReaders[i].reopenSegment(infos.info(i));        }        if (newReader == newReaders[i]) {          // this reader will be shared between the old and the new one,          // so we must incRef it          readerShared[i] = true;          newReader.incRef();        } else {          readerShared[i] = false;          newReaders[i] = newReader;        }        success = true;      } finally {        if (!success) {          for (i++; i < infos.size(); i++) {            if (newReaders[i] != null) {              try {                if (!readerShared[i]) {                  // this is a new subReader that is not used by the old one,                  // we can close it                  newReaders[i].close();                } else {                  // this subReader is also used by the old reader, so instead                  // closing we must decRef it                  newReaders[i].decRef();                }              } catch (IOException ignore) {                // keep going - we want to clean up as much as possible              }            }          }        }      }    }            // initialize the readers to calculate maxDoc before we try to reuse the old normsCache    initialize(newReaders);        // try to copy unchanged norms from the old normsCache to the new one    if (oldNormsCache != null) {      Iterator it = oldNormsCache.entrySet().iterator();      while (it.hasNext()) {        Map.Entry entry = (Map.Entry) it.next();        String field = (String) entry.getKey();        if (!hasNorms(field)) {          continue;        }        byte[] oldBytes = (byte[]) entry.getValue();        byte[] bytes = new byte[maxDoc()];        for (int i = 0; i < subReaders.length; i++) {          Integer oldReaderIndex = ((Integer) segmentReaders.get(subReaders[i].getSegmentName()));          // this SegmentReader was not re-opened, we can copy all of its norms           if (oldReaderIndex != null &&               (oldReaders[oldReaderIndex.intValue()] == subReaders[i]                  || oldReaders[oldReaderIndex.intValue()].norms.get(field) == subReaders[i].norms.get(field))) {            // we don't have to synchronize here: either this constructor is called from a SegmentReader,            // in which case no old norms cache is present, or it is called from MultiReader.reopen(),            // which is synchronized            System.arraycopy(oldBytes, oldStarts[oldReaderIndex.intValue()], bytes, starts[i], starts[i+1] - starts[i]);          } else {            subReaders[i].norms(field, bytes, starts[i]);          }        }        normsCache.put(field, bytes);      // update cache      }    }  }  private void initialize(SegmentReader[] subReaders) {    this.subReaders = subReaders;    starts = new int[subReaders.length + 1];    // build starts array    for (int i = 0; i < subReaders.length; i++) {      starts[i] = maxDoc;      maxDoc += subReaders[i].maxDoc();      // compute maxDocs      if (subReaders[i].hasDeletions())        hasDeletions = true;    }    starts[subReaders.length] = maxDoc;  }  protected synchronized DirectoryIndexReader doReopen(SegmentInfos infos) throws CorruptIndexException, IOException {    if (infos.size() == 1) {      // The index has only one segment now, so we can't refresh the MultiSegmentReader.      // Return a new [ReadOnly]SegmentReader instead      return SegmentReader.get(readOnly, infos, infos.info(0), false);    } else if (readOnly) {      return new ReadOnlyMultiSegmentReader(directory, infos, closeDirectory, subReaders, starts, normsCache);    } else {      return new MultiSegmentReader(directory, infos, closeDirectory, subReaders, starts, normsCache, false);    }              }  public TermFreqVector[] getTermFreqVectors(int n) throws IOException {    ensureOpen();    int i = readerIndex(n);        // find segment num    return subReaders[i].getTermFreqVectors(n - starts[i]); // dispatch to segment  }  public TermFreqVector getTermFreqVector(int n, String field)      throws IOException {    ensureOpen();    int i = readerIndex(n);        // find segment num    return subReaders[i].getTermFreqVector(n - starts[i], field);  }  public void getTermFreqVector(int docNumber, String field, TermVectorMapper mapper) throws IOException {    ensureOpen();    int i = readerIndex(docNumber);        // find segment num    subReaders[i].getTermFreqVector(docNumber - starts[i], field, mapper);  }  public void getTermFreqVector(int docNumber, TermVectorMapper mapper) throws IOException {    ensureOpen();    int i = readerIndex(docNumber);        // find segment num    subReaders[i].getTermFreqVector(docNumber - starts[i], mapper);  }  public boolean isOptimized() {    return false;  }    public synchronized int numDocs() {    // Don't call ensureOpen() here (it could affect performance)    if (numDocs == -1) {        // check cache      int n = 0;                // cache miss--recompute      for (int i = 0; i < subReaders.length; i++)        n += subReaders[i].numDocs();      // sum from readers      numDocs = n;    }    return numDocs;  }  public int maxDoc() {    // Don't call ensureOpen() here (it could affect performance)    return maxDoc;  }  // inherit javadoc  public Document document(int n, FieldSelector fieldSelector) throws CorruptIndexException, IOException {    ensureOpen();    int i = readerIndex(n);                          // find segment num    return subReaders[i].document(n - starts[i], fieldSelector);    // dispatch to segment reader  }  public boolean isDeleted(int n) {    // Don't call ensureOpen() here (it could affect performance)    final int i = readerIndex(n);                           // find segment num    return subReaders[i].isDeleted(n - starts[i]);    // dispatch to segment reader  }  public boolean hasDeletions() {    // Don't call ensureOpen() here (it could affect performance)    return hasDeletions;  }  protected void doDelete(int n) throws CorruptIndexException, IOException {    numDocs = -1;                             // invalidate cache    int i = readerIndex(n);                   // find segment num    subReaders[i].deleteDocument(n - starts[i]);      // dispatch to segment reader    hasDeletions = true;  }  protected void doUndeleteAll() throws CorruptIndexException, IOException {    for (int i = 0; i < subReaders.length; i++)      subReaders[i].undeleteAll();    hasDeletions = false;    numDocs = -1;                                 // invalidate cache  }  private int readerIndex(int n) {    // find reader for doc n:    return readerIndex(n, this.starts, this.subReaders.length);  }    final static int readerIndex(int n, int[] starts, int numSubReaders) {    // find reader for doc n:    int lo = 0;                                      // search starts array    int hi = numSubReaders - 1;                  // for first element less    while (hi >= lo) {      int mid = (lo + hi) >> 1;      int midValue = starts[mid];      if (n < midValue)        hi = mid - 1;      else if (n > midValue)        lo = mid + 1;      else {                                      // found a match        while (mid+1 < numSubReaders && starts[mid+1] == midValue) {          mid++;                                  // scan to last match        }        return mid;      }    }    return hi;  }  public boolean hasNorms(String field) throws IOException {    ensureOpen();    for (int i = 0; i < subReaders.length; i++) {      if (subReaders[i].hasNorms(field)) return true;    }    return false;  }  private byte[] ones;  private byte[] fakeNorms() {    if (ones==null) ones=SegmentReader.createFakeNorms(maxDoc());    return ones;  }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美无人高清视频在线观看| 中文字幕精品一区二区精品绿巨人| 亚洲另类在线制服丝袜| 国产精品一二三区| 精品人伦一区二区色婷婷| 视频精品一区二区| 国产精品二三区| 亚洲综合在线电影| 色综合一区二区| 亚洲青青青在线视频| 久久99久久精品| 欧美一区二区久久久| 日韩精品乱码免费| 日韩免费视频一区二区| 亚洲国产人成综合网站| 欧美三级视频在线| 亚洲欧美在线视频| 色哟哟一区二区三区| 一区二区三区四区激情| 欧美性猛片xxxx免费看久爱| 亚洲欧美一区二区久久| 在线精品视频小说1| 亚洲欧美一区二区久久| 欧美熟乱第一页| 午夜精品久久久久影视| 欧美一区二区高清| 激情六月婷婷综合| 中文成人综合网| 欧美三电影在线| 婷婷综合五月天| 精品精品欲导航| 成人激情小说网站| 樱桃视频在线观看一区| 欧美精品在欧美一区二区少妇| 日韩中文字幕1| 91精品一区二区三区在线观看| 激情小说亚洲一区| 久久久另类综合| 色网站国产精品| 午夜影院久久久| 国产色产综合产在线视频| www.久久久久久久久| 日本一不卡视频| 久久久精品国产免费观看同学| 99精品久久只有精品| 亚洲成年人影院| 久久久久97国产精华液好用吗| 91国内精品野花午夜精品| 蜜臀a∨国产成人精品| 久久久久亚洲综合| 色综合夜色一区| 奇米影视在线99精品| 国产精品视频免费| 欧美精品丝袜中出| 不卡在线观看av| 天使萌一区二区三区免费观看| 欧美伦理电影网| av电影一区二区| 久久99国内精品| 一区二区三区小说| 久久免费午夜影院| 欧美日韩一区二区电影| 99久久精品免费精品国产| 青草国产精品久久久久久| 亚洲欧美日韩小说| 国产亚洲一区二区三区四区| 欧美午夜片在线看| 成人午夜大片免费观看| 国产最新精品精品你懂的| 亚洲一区自拍偷拍| 国产69精品久久99不卡| 国产亚洲成aⅴ人片在线观看 | 色哟哟国产精品| 91在线你懂得| 91蜜桃在线免费视频| 91亚洲精品久久久蜜桃| 一本高清dvd不卡在线观看| 91年精品国产| 在线日韩av片| 欧美日韩成人一区二区| 69堂亚洲精品首页| 日韩一级完整毛片| 久久影院视频免费| 国产精品污网站| 最新日韩在线视频| 亚洲精品大片www| 亚洲va韩国va欧美va精品| 日韩成人一级大片| 狠狠网亚洲精品| 成人精品国产一区二区4080| 94色蜜桃网一区二区三区| 在线区一区二视频| 欧美一级专区免费大片| 欧美精品一区二区久久久| 国产人久久人人人人爽| 中文字幕日韩一区| 亚洲小少妇裸体bbw| 美女网站在线免费欧美精品| 国产精品自拍毛片| 一本色道久久综合狠狠躁的推荐| 欧洲在线/亚洲| 精品欧美一区二区在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲免费在线观看| 青青草国产成人av片免费| 国产精品系列在线观看| 91一区二区三区在线观看| 欧美日韩一区二区三区高清 | 欧美日韩性生活| 欧美va亚洲va香蕉在线| 自拍视频在线观看一区二区| 五月婷婷欧美视频| 成人综合在线网站| 欧美日韩精品一区二区三区蜜桃 | 91免费看视频| 日韩欧美区一区二| 亚洲欧美自拍偷拍| 免费久久精品视频| 99久久夜色精品国产网站| 日韩一级片网站| 17c精品麻豆一区二区免费| 男人的天堂久久精品| 欧美成人精品二区三区99精品| 欧美videofree性高清杂交| 亚洲丝袜自拍清纯另类| 麻豆91在线观看| 色吧成人激情小说| 久久久久久97三级| 视频一区视频二区中文字幕| 97久久精品人人做人人爽 | 精品日韩成人av| 一区二区三区精品在线观看| 国产高清精品网站| 91精品欧美福利在线观看| 亚洲另类春色校园小说| 韩国av一区二区三区在线观看| 欧美日韩高清影院| 国产精品美女久久久久久| 久久99国产精品尤物| 欧美日本在线视频| 亚洲色图制服丝袜| 国产成人久久精品77777最新版本| 精品1区2区3区| 最近日韩中文字幕| 国产91在线看| 久久色在线观看| 久久91精品国产91久久小草| 欧美日韩国产高清一区二区三区 | 欧美日精品一区视频| 国产精品理论片在线观看| 国内久久精品视频| 日韩精品一区国产麻豆| 性感美女久久精品| 色999日韩国产欧美一区二区| 国产精品嫩草99a| 国产精品资源网| 久久久亚洲国产美女国产盗摄| 麻豆久久久久久| 欧美麻豆精品久久久久久| 亚洲国产精品久久艾草纯爱 | 成人黄色小视频在线观看| 精品国产91乱码一区二区三区 | 免费观看成人鲁鲁鲁鲁鲁视频| 在线观看www91| 玉足女爽爽91| 日本道色综合久久| 亚洲免费观看高清在线观看| 一本一道综合狠狠老| 亚洲精品自拍动漫在线| 欧美在线免费播放| 午夜精品一区二区三区免费视频| 欧美无砖专区一中文字| 五月激情综合网| 欧美一区二区性放荡片| 久久国产麻豆精品| 欧美精品一区二区三区四区| 国内精品伊人久久久久av影院| 精品久久一区二区| 91在线你懂得| 亚洲激情欧美激情| 欧美日韩高清一区二区不卡 | 一区二区三区在线播放| 欧美在线你懂的| 婷婷亚洲久悠悠色悠在线播放| 69堂成人精品免费视频| 精品夜夜嗨av一区二区三区| 久久精品亚洲精品国产欧美 | 精品一区二区在线播放| 337p粉嫩大胆色噜噜噜噜亚洲| 国产黑丝在线一区二区三区| 国产精品电影院| 欧美私人免费视频| 激情亚洲综合在线| 国产精品久久久久aaaa樱花| 欧美写真视频网站| 精品中文av资源站在线观看| 国产精品天干天干在观线| 欧美性一级生活| 狠狠色丁香久久婷婷综合_中| 国产精品第四页|