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

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

?? termvectorswriter.java

?? lucene完整源碼
?? JAVA
字號(hào):
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.store.Directory;import org.apache.lucene.store.IndexOutput;import org.apache.lucene.util.StringHelper;import java.io.IOException;import java.util.Vector;/** * Writer works by opening a document and then opening the fields within the document and then * writing out the vectors for each field. *  * Rough usage: * <CODE> for each document { writer.openDocument(); for each field on the document { writer.openField(field); for all of the terms { writer.addTerm(...) } writer.closeField } writer.closeDocument()     } </CODE> * * @version $Id: TermVectorsWriter.java 150689 2004-11-29 21:42:02Z bmesser $ *  */final class TermVectorsWriter {  static final byte STORE_POSITIONS_WITH_TERMVECTOR = 0x1;  static final byte STORE_OFFSET_WITH_TERMVECTOR = 0x2;    static final int FORMAT_VERSION = 2;  //The size in bytes that the FORMAT_VERSION will take up at the beginning of each file   static final int FORMAT_SIZE = 4;    static final String TVX_EXTENSION = ".tvx";  static final String TVD_EXTENSION = ".tvd";  static final String TVF_EXTENSION = ".tvf";    private IndexOutput tvx = null, tvd = null, tvf = null;  private Vector fields = null;  private Vector terms = null;  private FieldInfos fieldInfos;  private TVField currentField = null;  private long currentDocPointer = -1;  public TermVectorsWriter(Directory directory, String segment,                           FieldInfos fieldInfos)    throws IOException {    // Open files for TermVector storage    tvx = directory.createOutput(segment + TVX_EXTENSION);    tvx.writeInt(FORMAT_VERSION);    tvd = directory.createOutput(segment + TVD_EXTENSION);    tvd.writeInt(FORMAT_VERSION);    tvf = directory.createOutput(segment + TVF_EXTENSION);    tvf.writeInt(FORMAT_VERSION);    this.fieldInfos = fieldInfos;    fields = new Vector(fieldInfos.size());    terms = new Vector();  }  public final void openDocument()          throws IOException {    closeDocument();    currentDocPointer = tvd.getFilePointer();  }  public final void closeDocument()          throws IOException {    if (isDocumentOpen()) {      closeField();      writeDoc();      fields.clear();      currentDocPointer = -1;    }  }  public final boolean isDocumentOpen() {    return currentDocPointer != -1;  }  /** Start processing a field. This can be followed by a number of calls to   *  addTerm, and a final call to closeField to indicate the end of   *  processing of this field. If a field was previously open, it is   *  closed automatically.   */  public final void openField(String field) throws IOException {    FieldInfo fieldInfo = fieldInfos.fieldInfo(field);    openField(fieldInfo.number, fieldInfo.storePositionWithTermVector, fieldInfo.storeOffsetWithTermVector);  }    private void openField(int fieldNumber, boolean storePositionWithTermVector,       boolean storeOffsetWithTermVector) throws IOException{    if (!isDocumentOpen())       throw new IllegalStateException("Cannot open field when no document is open.");    closeField();    currentField = new TVField(fieldNumber, storePositionWithTermVector, storeOffsetWithTermVector);  }  /** Finished processing current field. This should be followed by a call to   *  openField before future calls to addTerm.   */  public final void closeField()          throws IOException {    if (isFieldOpen()) {      /* DEBUG */      //System.out.println("closeField()");      /* DEBUG */      // save field and terms      writeField();      fields.add(currentField);      terms.clear();      currentField = null;    }  }  /** Return true if a field is currently open. */  public final boolean isFieldOpen() {    return currentField != null;  }  /** Add term to the field's term vector. Field must already be open.   *  Terms should be added in   *  increasing order of terms, one call per unique termNum. ProxPointer   *  is a pointer into the TermPosition file (prx). Freq is the number of   *  times this term appears in this field, in this document.   * @throws IllegalStateException if document or field is not open   */  public final void addTerm(String termText, int freq) {    addTerm(termText, freq, null, null);  }    public final void addTerm(String termText, int freq, int [] positions, TermVectorOffsetInfo [] offsets)  {    if (!isDocumentOpen())       throw new IllegalStateException("Cannot add terms when document is not open");    if (!isFieldOpen())       throw new IllegalStateException("Cannot add terms when field is not open");        addTermInternal(termText, freq, positions, offsets);  }  private final void addTermInternal(String termText, int freq, int [] positions, TermVectorOffsetInfo [] offsets) {    TVTerm term = new TVTerm();    term.termText = termText;    term.freq = freq;    term.positions = positions;    term.offsets = offsets;    terms.add(term);  }  /**   * Add a complete document specified by all its term vectors. If document has no   * term vectors, add value for tvx.   *    * @param vectors   * @throws IOException   */  public final void addAllDocVectors(TermFreqVector[] vectors)      throws IOException {    openDocument();    if (vectors != null) {      for (int i = 0; i < vectors.length; i++) {        boolean storePositionWithTermVector = false;        boolean storeOffsetWithTermVector = false;        try {          TermPositionVector tpVector = (TermPositionVector) vectors[i];          if (tpVector.size() > 0 && tpVector.getTermPositions(0) != null)            storePositionWithTermVector = true;          if (tpVector.size() > 0 && tpVector.getOffsets(0) != null)            storeOffsetWithTermVector = true;          FieldInfo fieldInfo = fieldInfos.fieldInfo(tpVector.getField());          openField(fieldInfo.number, storePositionWithTermVector, storeOffsetWithTermVector);          for (int j = 0; j < tpVector.size(); j++)            addTermInternal(tpVector.getTerms()[j], tpVector.getTermFrequencies()[j], tpVector.getTermPositions(j),                tpVector.getOffsets(j));          closeField();        } catch (ClassCastException ignore) {          TermFreqVector tfVector = vectors[i];          FieldInfo fieldInfo = fieldInfos.fieldInfo(tfVector.getField());          openField(fieldInfo.number, storePositionWithTermVector, storeOffsetWithTermVector);          for (int j = 0; j < tfVector.size(); j++)            addTermInternal(tfVector.getTerms()[j], tfVector.getTermFrequencies()[j], null, null);          closeField();        }      }    }    closeDocument();  }    /** Close all streams. */  final void close() throws IOException {    try {      closeDocument();    } finally {      // make an effort to close all streams we can but remember and re-throw      // the first exception encountered in this process      IOException keep = null;      if (tvx != null)        try {          tvx.close();        } catch (IOException e) {          if (keep == null) keep = e;        }      if (tvd != null)        try {          tvd.close();        } catch (IOException e) {          if (keep == null) keep = e;        }      if (tvf != null)        try {          tvf.close();        } catch (IOException e) {          if (keep == null) keep = e;        }      if (keep != null) throw (IOException) keep.fillInStackTrace();    }  }    private void writeField() throws IOException {    // remember where this field is written    currentField.tvfPointer = tvf.getFilePointer();    //System.out.println("Field Pointer: " + currentField.tvfPointer);        final int size = terms.size();    tvf.writeVInt(size);        boolean storePositions = currentField.storePositions;    boolean storeOffsets = currentField.storeOffsets;    byte bits = 0x0;    if (storePositions)       bits |= STORE_POSITIONS_WITH_TERMVECTOR;    if (storeOffsets)       bits |= STORE_OFFSET_WITH_TERMVECTOR;    tvf.writeByte(bits);        String lastTermText = "";    for (int i = 0; i < size; i++) {      TVTerm term = (TVTerm) terms.elementAt(i);      int start = StringHelper.stringDifference(lastTermText, term.termText);      int length = term.termText.length() - start;      tvf.writeVInt(start);       // write shared prefix length      tvf.writeVInt(length);        // write delta length      tvf.writeChars(term.termText, start, length);  // write delta chars      tvf.writeVInt(term.freq);      lastTermText = term.termText;            if(storePositions){        if(term.positions == null)          throw new IllegalStateException("Trying to write positions that are null!");                // use delta encoding for positions        int position = 0;        for (int j = 0; j < term.freq; j++){          tvf.writeVInt(term.positions[j] - position);          position = term.positions[j];        }      }            if(storeOffsets){        if(term.offsets == null)          throw new IllegalStateException("Trying to write offsets that are null!");                // use delta encoding for offsets        int position = 0;        for (int j = 0; j < term.freq; j++) {          tvf.writeVInt(term.offsets[j].getStartOffset() - position);          tvf.writeVInt(term.offsets[j].getEndOffset() - term.offsets[j].getStartOffset()); //Save the diff between the two.          position = term.offsets[j].getEndOffset();        }      }    }  }  private void writeDoc() throws IOException {    if (isFieldOpen())       throw new IllegalStateException("Field is still open while writing document");    //System.out.println("Writing doc pointer: " + currentDocPointer);    // write document index record    tvx.writeLong(currentDocPointer);    // write document data record    final int size = fields.size();    // write the number of fields    tvd.writeVInt(size);    // write field numbers    for (int i = 0; i < size; i++) {      TVField field = (TVField) fields.elementAt(i);      tvd.writeVInt(field.number);    }    // write field pointers    long lastFieldPointer = 0;    for (int i = 0; i < size; i++) {      TVField field = (TVField) fields.elementAt(i);      tvd.writeVLong(field.tvfPointer - lastFieldPointer);      lastFieldPointer = field.tvfPointer;    }    //System.out.println("After writing doc pointer: " + tvx.getFilePointer());  }  private static class TVField {    int number;    long tvfPointer = 0;    boolean storePositions = false;    boolean storeOffsets = false;    TVField(int number, boolean storePos, boolean storeOff) {      this.number = number;      storePositions = storePos;      storeOffsets = storeOff;    }  }  private static class TVTerm {    String termText;    int freq = 0;    int positions[] = null;    TermVectorOffsetInfo [] offsets = null;  }}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品18久久久久久久久久久久 | 欧美在线观看一区| 日韩1区2区3区| 国产精品美女一区二区三区| 538prom精品视频线放| 成人看片黄a免费看在线| 日韩激情一区二区| 国产精品午夜免费| 日韩一级成人av| 色欧美片视频在线观看在线视频| 久久66热偷产精品| 亚洲午夜影视影院在线观看| 国产精品网站在线| 日韩欧美一区在线观看| 91国偷自产一区二区开放时间| 国产一区二区三区视频在线播放| 亚洲国产精品久久艾草纯爱| 国产欧美视频一区二区三区| 3atv在线一区二区三区| 精品一区二区三区久久| 三级影片在线观看欧美日韩一区二区 | 欧美一区在线视频| 欧美性色黄大片手机版| 91女神在线视频| 丰满亚洲少妇av| 国产一区二区调教| 国产在线视频一区二区| 美国精品在线观看| 日韩福利电影在线| 香港成人在线视频| 一区二区三区在线影院| 中文字幕一区二区三区在线观看 | 一色屋精品亚洲香蕉网站| 99久久精品国产一区二区三区| 国产福利91精品| 秋霞电影一区二区| 亚洲成人激情社区| 亚洲另类色综合网站| 国产日韩欧美精品综合| 精品盗摄一区二区三区| 日本一区二区三区免费乱视频| 日韩欧美中文字幕一区| 在线电影国产精品| 欧美日韩中文字幕一区二区| 99国产精品国产精品久久| 国产91在线看| 国产不卡一区视频| 国产一区高清在线| 国产一区二区三区四区五区入口 | 欧美日韩一区二区三区在线| 国产超碰在线一区| 韩国中文字幕2020精品| 久久不见久久见免费视频7| 日韩激情一二三区| 日本特黄久久久高潮| 天堂蜜桃91精品| 午夜视频久久久久久| 国产精品久久久久aaaa| 国产精品女上位| 国产精品国产精品国产专区不片| 国产精品久久久久久久久免费相片 | 蜜臀av性久久久久av蜜臀妖精| 亚洲成人福利片| 五月天国产精品| 日韩黄色在线观看| 蜜桃久久久久久久| 国产真实乱偷精品视频免| 久热成人在线视频| 国产中文字幕精品| 国产91精品入口| 99精品久久只有精品| 色婷婷av一区二区三区软件| 欧美性猛片xxxx免费看久爱| 欧美久久婷婷综合色| 日韩欧美123| 精品嫩草影院久久| 国产精品毛片无遮挡高清| 亚洲日本乱码在线观看| 亚洲一区二区三区小说| 日本午夜一区二区| 国产精品白丝av| 99riav久久精品riav| 欧美无砖专区一中文字| 欧美精品日韩综合在线| 精品黑人一区二区三区久久| 久久精品视频一区二区三区| 中文字幕国产一区| 亚洲成av人片| 国产精品影视网| 一本大道久久a久久精二百 | 色偷偷久久人人79超碰人人澡| 欧美视频三区在线播放| 欧美变态口味重另类| 亚洲欧洲成人精品av97| 五月天欧美精品| 成人晚上爱看视频| 欧美美女一区二区三区| 久久久久久久av麻豆果冻| 日韩精品亚洲一区二区三区免费| 久久99久久精品| 大陆成人av片| 日韩视频123| 亚洲欧美电影一区二区| 免费欧美日韩国产三级电影| 波多野结衣一区二区三区| 欧美日韩国产一级| 欧美激情一区三区| 日本在线不卡视频| 成人自拍视频在线| 欧美一区二区三区四区视频| 国产精品毛片a∨一区二区三区| 亚洲国产婷婷综合在线精品| 国产资源在线一区| 在线播放亚洲一区| 亚洲人成亚洲人成在线观看图片| 免费人成精品欧美精品| av成人免费在线观看| 精品99一区二区| 亚洲国产精品久久不卡毛片 | 国产乱子轮精品视频| 欧美性一二三区| 欧美国产日本视频| 日韩成人伦理电影在线观看| 91麻豆swag| 国产视频亚洲色图| 麻豆精品视频在线观看视频| 国产乱淫av一区二区三区| 在线免费观看成人短视频| 国产精品久久久久久久蜜臀| 国产毛片一区二区| 日韩精品一区二区三区老鸭窝 | 激情国产一区二区| 欧美人妇做爰xxxⅹ性高电影| 国产精品免费网站在线观看| 国模一区二区三区白浆| 欧美色图在线观看| 日本一区二区三区四区在线视频| 国产精品一品视频| 精品久久五月天| 久久电影国产免费久久电影| 欧美日韩国产精选| 亚洲一区二区av电影| 色先锋aa成人| 亚洲欧美日韩国产另类专区| 成人国产在线观看| 国产精品丝袜一区| 成人激情黄色小说| 日本一区二区三区四区在线视频 | 国产一区欧美一区| 精品国产自在久精品国产| 久久99久久99| 久久久久久久久岛国免费| 国产精品综合视频| 国产精品区一区二区三区| 国产精品一区二区男女羞羞无遮挡 | 精彩视频一区二区三区 | 18涩涩午夜精品.www| a级高清视频欧美日韩| 日韩一区日韩二区| 色94色欧美sute亚洲线路一久| 自拍偷拍欧美激情| 色94色欧美sute亚洲线路二| 亚洲愉拍自拍另类高清精品| 欧美高清视频在线高清观看mv色露露十八| 亚洲男人的天堂在线观看| 亚洲欧美日韩精品久久久久| 91浏览器在线视频| 亚洲成人777| 欧美一区二区免费视频| 狠狠色丁香久久婷婷综合_中| 欧美日韩精品免费| 日韩精品一卡二卡三卡四卡无卡| 日韩一区二区免费在线观看| 久久精品国产亚洲一区二区三区| 26uuu亚洲综合色欧美 | 中文字幕一区二区三区在线观看| 国产91精品精华液一区二区三区| 精品国产乱码久久久久久1区2区| 99精品国产99久久久久久白柏| 亚洲一区二区三区四区五区黄| 欧美精三区欧美精三区| 久草中文综合在线| 中文字幕制服丝袜一区二区三区| 在线精品观看国产| 免费成人结看片| 中文字幕av不卡| 欧美午夜精品一区二区三区| 日韩成人dvd| 日本一区二区视频在线观看| 精品视频全国免费看| 精品在线观看免费| 亚洲视频一区在线| 日韩三级伦理片妻子的秘密按摩| 处破女av一区二区| 亚洲chinese男男1069| 久久亚洲二区三区| 91在线观看一区二区| 精品一区二区三区香蕉蜜桃| 国产精品国产成人国产三级| 欧美一区二区在线免费观看|