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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? indexreader.java

?? lucene完整源碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package org.apache.lucene.index;/** * Copyright 2004 The Apache Software Foundation * * Licensed 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 org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.lucene.search.Similarity;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;import org.apache.lucene.store.IndexInput;import org.apache.lucene.store.Lock;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.util.Arrays;import java.util.Collection;/** IndexReader is an abstract class, providing an interface for accessing an index.  Search of an index is done entirely through this abstract interface, so that any subclass which implements it is searchable. <p> Concrete subclasses of IndexReader are usually constructed with a call to one of the static <code>open()</code> methods, e.g. {@link #open(String)}. <p> For efficiency, in this API documents are often referred to via <i>document numbers</i>, non-negative integers which each name a unique document in the index.  These document numbers are ephemeral--they may change as documents are added to and deleted from an index.  Clients should thus not rely on a given document having the same number between sessions.  <p> An IndexReader can be opened on a directory for which an IndexWriter is opened already, but it cannot be used to delete documents from the index then. @author Doug Cutting @version $Id: IndexReader.java 400187 2006-05-05 21:47:58Z dnaber $*/public abstract class IndexReader {    public static final class FieldOption {    private String option;    private FieldOption() { }    private FieldOption(String option) {      this.option = option;    }     public String toString() {      return this.option;    }    // all fields    public static final FieldOption ALL = new FieldOption ("ALL");    // all indexed fields    public static final FieldOption INDEXED = new FieldOption ("INDEXED");    // all fields which are not indexed    public static final FieldOption UNINDEXED = new FieldOption ("UNINDEXED");    // all fields which are indexed with termvectors enables    public static final FieldOption INDEXED_WITH_TERMVECTOR = new FieldOption ("INDEXED_WITH_TERMVECTOR");    // all fields which are indexed but don't have termvectors enabled    public static final FieldOption INDEXED_NO_TERMVECTOR = new FieldOption ("INDEXED_NO_TERMVECTOR");    // all fields where termvectors are enabled. Please note that only standard termvector fields are returned    public static final FieldOption TERMVECTOR = new FieldOption ("TERMVECTOR");    // all field with termvectors wiht positions enabled    public static final FieldOption TERMVECTOR_WITH_POSITION = new FieldOption ("TERMVECTOR_WITH_POSITION");    // all fields where termvectors with offset position are set    public static final FieldOption TERMVECTOR_WITH_OFFSET = new FieldOption ("TERMVECTOR_WITH_OFFSET");    // all fields where termvectors with offset and position values set    public static final FieldOption TERMVECTOR_WITH_POSITION_OFFSET = new FieldOption ("TERMVECTOR_WITH_POSITION_OFFSET");  }    /**   * Constructor used if IndexReader is not owner of its directory.    * This is used for IndexReaders that are used within other IndexReaders that take care or locking directories.   *    * @param directory Directory where IndexReader files reside.   */  protected IndexReader(Directory directory) {    this.directory = directory;  }    /**   * Constructor used if IndexReader is owner of its directory.   * If IndexReader is owner of its directory, it locks its directory in case of write operations.   *    * @param directory Directory where IndexReader files reside.   * @param segmentInfos Used for write-l   * @param closeDirectory   */  IndexReader(Directory directory, SegmentInfos segmentInfos, boolean closeDirectory) {    init(directory, segmentInfos, closeDirectory, true);  }  void init(Directory directory, SegmentInfos segmentInfos, boolean closeDirectory, boolean directoryOwner) {    this.directory = directory;    this.segmentInfos = segmentInfos;    this.directoryOwner = directoryOwner;    this.closeDirectory = closeDirectory;  }  private Directory directory;  private boolean directoryOwner;  private boolean closeDirectory;  private SegmentInfos segmentInfos;  private Lock writeLock;  private boolean stale;  private boolean hasChanges;    /** Returns an IndexReader reading the index in an FSDirectory in the named   path. */  public static IndexReader open(String path) throws IOException {    return open(FSDirectory.getDirectory(path, false), true);  }  /** Returns an IndexReader reading the index in an FSDirectory in the named   path. */  public static IndexReader open(File path) throws IOException {    return open(FSDirectory.getDirectory(path, false), true);  }    /** Returns an IndexReader reading the index in the given Directory. */  public static IndexReader open(final Directory directory) throws IOException {    return open(directory, false);  }  private static IndexReader open(final Directory directory, final boolean closeDirectory) throws IOException {    synchronized (directory) {			  // in- & inter-process sync      return (IndexReader)new Lock.With(          directory.makeLock(IndexWriter.COMMIT_LOCK_NAME),          IndexWriter.COMMIT_LOCK_TIMEOUT) {          public Object doBody() throws IOException {            SegmentInfos infos = new SegmentInfos();            infos.read(directory);            if (infos.size() == 1) {		  // index is optimized              return SegmentReader.get(infos, infos.info(0), closeDirectory);            }            IndexReader[] readers = new IndexReader[infos.size()];            for (int i = 0; i < infos.size(); i++)              readers[i] = SegmentReader.get(infos.info(i));            return new MultiReader(directory, infos, closeDirectory, readers);                      }        }.run();    }  }  /** Returns the directory this index resides in. */  public Directory directory() { return directory; }  /**    * Returns the time the index in the named directory was last modified.   * Do not use this to check whether the reader is still up-to-date, use   * {@link #isCurrent()} instead.    */  public static long lastModified(String directory) throws IOException {    return lastModified(new File(directory));  }  /**    * Returns the time the index in the named directory was last modified.    * Do not use this to check whether the reader is still up-to-date, use   * {@link #isCurrent()} instead.    */  public static long lastModified(File directory) throws IOException {    return FSDirectory.fileModified(directory, IndexFileNames.SEGMENTS);  }  /**    * Returns the time the index in the named directory was last modified.    * Do not use this to check whether the reader is still up-to-date, use   * {@link #isCurrent()} instead.    */  public static long lastModified(Directory directory) throws IOException {    return directory.fileModified(IndexFileNames.SEGMENTS);  }  /**   * Reads version number from segments files. The version number is   * initialized with a timestamp and then increased by one for each change of   * the index.   *    * @param directory where the index resides.   * @return version number.   * @throws IOException if segments file cannot be read   */  public static long getCurrentVersion(String directory) throws IOException {    return getCurrentVersion(new File(directory));  }  /**   * Reads version number from segments files. The version number is   * initialized with a timestamp and then increased by one for each change of   * the index.   *    * @param directory where the index resides.   * @return version number.   * @throws IOException if segments file cannot be read   */  public static long getCurrentVersion(File directory) throws IOException {    Directory dir = FSDirectory.getDirectory(directory, false);    long version = getCurrentVersion(dir);    dir.close();    return version;  }  /**   * Reads version number from segments files. The version number is   * initialized with a timestamp and then increased by one for each change of   * the index.   *    * @param directory where the index resides.   * @return version number.   * @throws IOException if segments file cannot be read.   */  public static long getCurrentVersion(Directory directory) throws IOException {    synchronized (directory) {                 // in- & inter-process sync      Lock commitLock=directory.makeLock(IndexWriter.COMMIT_LOCK_NAME);            boolean locked=false;            try {         locked=commitLock.obtain(IndexWriter.COMMIT_LOCK_TIMEOUT);                  return SegmentInfos.readCurrentVersion(directory);      } finally {        if (locked) {          commitLock.release();        }      }    }  }    /**   * Version number when this IndexReader was opened.   */  public long getVersion() {    return segmentInfos.getVersion();  }  /**   * Check whether this IndexReader still works on a current version of the index.   * If this is not the case you will need to re-open the IndexReader to   * make sure you see the latest changes made to the index.   *    * @throws IOException   */  public boolean isCurrent() throws IOException {    synchronized (directory) {                 // in- & inter-process sync      Lock commitLock=directory.makeLock(IndexWriter.COMMIT_LOCK_NAME);            boolean locked=false;            try {         locked=commitLock.obtain(IndexWriter.COMMIT_LOCK_TIMEOUT);                  return SegmentInfos.readCurrentVersion(directory) == segmentInfos.getVersion();      } finally {        if (locked) {          commitLock.release();        }      }    }  }  /**   *  Return an array of term frequency vectors for the specified document.   *  The array contains a vector for each vectorized field in the document.   *  Each vector contains terms and frequencies for all terms in a given vectorized field.   *  If no such fields existed, the method returns null. The term vectors that are   * returned my either be of type TermFreqVector or of type TermPositionsVector if   * positions or offsets have been stored.   *    * @param docNumber document for which term frequency vectors are returned   * @return array of term frequency vectors. May be null if no term vectors have been   *  stored for the specified document.   * @throws IOException if index cannot be accessed   * @see org.apache.lucene.document.Field.TermVector   */  abstract public TermFreqVector[] getTermFreqVectors(int docNumber)          throws IOException;    /**   *  Return a term frequency vector for the specified document and field. The   *  returned vector contains terms and frequencies for the terms in   *  the specified field of this document, if the field had the storeTermVector   *  flag set. If termvectors had been stored with positions or offsets, a    *  TermPositionsVector is returned.   *    * @param docNumber document for which the term frequency vector is returned   * @param field field for which the term frequency vector is returned.   * @return term frequency vector May be null if field does not exist in the specified   * document or term vector was not stored.   * @throws IOException if index cannot be accessed   * @see org.apache.lucene.document.Field.TermVector   */  abstract public TermFreqVector getTermFreqVector(int docNumber, String field)          throws IOException;   /**   * Returns <code>true</code> if an index exists at the specified directory.   * If the directory does not exist or if there is no index in it.   * <code>false</code> is returned.   * @param  directory the directory to check for an index   * @return <code>true</code> if an index exists; <code>false</code> otherwise   */  public static boolean indexExists(String directory) {    return (new File(directory, IndexFileNames.SEGMENTS)).exists();  }  /**   * Returns <code>true</code> if an index exists at the specified directory.   * If the directory does not exist or if there is no index in it.   * @param  directory the directory to check for an index   * @return <code>true</code> if an index exists; <code>false</code> otherwise   */  public static boolean indexExists(File directory) {    return (new File(directory, IndexFileNames.SEGMENTS)).exists();  }  /**   * Returns <code>true</code> if an index exists at the specified directory.   * If the directory does not exist or if there is no index in it.   * @param  directory the directory to check for an index   * @return <code>true</code> if an index exists; <code>false</code> otherwise   * @throws IOException if there is a problem with accessing the index   */  public static boolean indexExists(Directory directory) throws IOException {    return directory.fileExists(IndexFileNames.SEGMENTS);  }  /** Returns the number of documents in this index. */  public abstract int numDocs();  /** Returns one greater than the largest possible document number.   * This may be used to, e.g., determine how big to allocate an array which   * will have an element for every document number in an index.   */  public abstract int maxDoc();  /** Returns the stored fields of the <code>n</code><sup>th</sup>   <code>Document</code> in this index. */  public abstract Document document(int n) throws IOException;  /** Returns true if document <i>n</i> has been deleted */  public abstract boolean isDeleted(int n);  /** Returns true if any documents have been deleted */  public abstract boolean hasDeletions();    /** Returns true if there are norms stored for this field. */  public boolean hasNorms(String field) throws IOException {    // backward compatible implementation.    // SegmentReader has an efficient implementation.    return norms(field) != null;  }  /** Returns the byte-encoded normalization factor for the named field of

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲欧美激情| 亚洲视频精选在线| 国产91清纯白嫩初高中在线观看 | 国产真实乱对白精彩久久| 国产精品高清亚洲| 欧美一区二区三区视频在线观看| 国产黄色精品视频| 日韩精品欧美精品| 亚洲丝袜自拍清纯另类| 久久综合久久久久88| 欧美日韩在线电影| 99在线精品一区二区三区| 麻豆高清免费国产一区| 亚洲大型综合色站| 亚洲欧洲成人自拍| 久久精品网站免费观看| 欧美大尺度电影在线| 在线一区二区观看| 91网站视频在线观看| 国产成人久久精品77777最新版本| 免费看日韩a级影片| 性欧美疯狂xxxxbbbb| 亚洲裸体在线观看| 国产精品丝袜黑色高跟| 久久女同精品一区二区| 日韩三级av在线播放| 欧美视频一区在线| 在线观看视频一区二区| 91污片在线观看| www.激情成人| 精品久久久影院| 欧美一级日韩不卡播放免费| 欧美视频在线一区二区三区| 在线观看视频91| 欧美亚洲综合久久| 欧美性受xxxx黑人xyx性爽| av电影天堂一区二区在线观看| 成人av在线影院| 不卡的av电影在线观看| 懂色av一区二区三区蜜臀| 国产一区二区伦理| 国产精品99久| 大美女一区二区三区| 99久久精品免费看| 成人午夜碰碰视频| 91视频你懂的| 色综合久久88色综合天天免费| 一本色道综合亚洲| 在线免费av一区| 欧美军同video69gay| 日韩视频一区在线观看| 2023国产精华国产精品| 久久精品免视看| 国产精品盗摄一区二区三区| 日韩毛片精品高清免费| 亚洲一区二区三区四区在线免费观看| 亚洲国产精品久久不卡毛片| 五月天欧美精品| 精品在线观看视频| 成人污视频在线观看| 欧美性生活影院| 日韩一区二区三区精品视频| 久久精品视频网| 亚洲视频香蕉人妖| 午夜成人免费视频| 激情综合网av| 91首页免费视频| 日韩视频免费直播| 亚洲国产高清aⅴ视频| 亚洲一区二区视频在线观看| 天天色综合成人网| 国产精品白丝av| 色婷婷综合久色| 欧美一级黄色片| 国产精品女同互慰在线看| 亚洲中国最大av网站| 久久99久久精品欧美| 91亚洲大成网污www| 日韩视频一区在线观看| 中文字幕一区二区三区色视频| 午夜av一区二区| 国产成人精品一区二| 欧美日韩国产高清一区二区 | 日韩女优电影在线观看| 国产精品久久久久久久久免费相片| 亚洲国产精品久久人人爱| 狠狠色丁香婷婷综合| 成人av午夜影院| 欧美一区二区三区视频免费| 国产精品动漫网站| 日韩福利电影在线观看| 成人福利电影精品一区二区在线观看| 欧美日韩精品欧美日韩精品| 欧美国产精品劲爆| 欧美性xxxxx极品少妇| 久久久久国产免费免费| 午夜精品福利视频网站| 99久久综合精品| 亚洲精品一区二区三区蜜桃下载| 一区二区在线观看视频在线观看| 精品一区二区三区不卡| 欧美日韩国产首页在线观看| 国产精品久久久久久久久免费樱桃| 久久激情综合网| 欧美午夜免费电影| 国产精品另类一区| 狠狠色丁香久久婷婷综合丁香| 欧美久久婷婷综合色| 一区二区三区小说| eeuss国产一区二区三区| 亚洲精品在线三区| 丝袜国产日韩另类美女| 色狠狠一区二区三区香蕉| 国产人久久人人人人爽| 精品一区二区久久| 日韩一区二区精品在线观看| 亚洲一区二区三区自拍| 91在线视频观看| 国产精品久久久爽爽爽麻豆色哟哟 | 一本大道av伊人久久综合| 久久精品人人爽人人爽| 国产一区高清在线| 欧美一区二区在线视频| 亚洲电影在线免费观看| 91国偷自产一区二区开放时间 | 久久亚洲春色中文字幕久久久| 亚洲va韩国va欧美va精品| 色综合久久综合网欧美综合网| 中文字幕永久在线不卡| 99精品在线观看视频| 亚洲国产高清在线| 成人a区在线观看| 国产精品久久久一本精品| av资源网一区| 国产精品福利影院| 91污片在线观看| 亚洲一区二区三区不卡国产欧美| 91浏览器在线视频| 亚洲精品国产精品乱码不99| 在线观看亚洲成人| 亚洲成av人片在线观看| 91精品国产乱码| 日韩av一级片| 日韩美女主播在线视频一区二区三区| 美女视频一区在线观看| 日韩欧美一级在线播放| 韩国精品免费视频| 国产日韩欧美电影| zzijzzij亚洲日本少妇熟睡| 亚洲日本乱码在线观看| 欧美色图一区二区三区| 日产欧产美韩系列久久99| 欧美mv日韩mv国产网站| 国产乱人伦偷精品视频免下载| 国产欧美精品区一区二区三区| av一区二区久久| 夜夜嗨av一区二区三区 | 中文字幕制服丝袜成人av| 91蝌蚪国产九色| 亚洲第一精品在线| 日韩无一区二区| 成人禁用看黄a在线| 亚洲精品视频在线看| 欧美理论电影在线| 九九热在线视频观看这里只有精品| 国产午夜精品久久| 日本道免费精品一区二区三区| 三级不卡在线观看| 久久综合99re88久久爱| 91在线高清观看| 日韩黄色免费电影| 国产日韩视频一区二区三区| 色婷婷综合久久久| 久久99久久99精品免视看婷婷 | 在线观看视频一区二区| 蜜桃av一区二区| 欧美国产一区二区| 欧美日韩中文字幕精品| 久久电影网电视剧免费观看| 中文子幕无线码一区tr| 欧美日韩国产高清一区| 成人免费毛片高清视频| 亚洲第一电影网| 国产女人18毛片水真多成人如厕 | 成人av动漫在线| 午夜精品久久久久久久蜜桃app| 久久中文娱乐网| 欧美日韩在线免费视频| 国产麻豆精品一区二区| 亚洲不卡一区二区三区| 国产欧美精品日韩区二区麻豆天美| 在线不卡中文字幕播放| www..com久久爱| 日本午夜一区二区| 亚洲欧美日韩中文播放| 精品国产免费视频| 欧美日韩在线播放三区四区| 国产成人av资源| 久久91精品国产91久久小草| 亚洲午夜国产一区99re久久|