⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parallelreader.java

📁 Lucene a java open-source SearchEngine Framework
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    IndexReader reader = ((IndexReader)fieldToReader.get(field));    if (reader != null) {      reader.getTermFreqVector(docNumber, field, mapper);     }  }  public void getTermFreqVector(int docNumber, TermVectorMapper mapper) throws IOException {    ensureOpen();    ensureOpen();    Iterator i = fieldToReader.entrySet().iterator();    while (i.hasNext()) {      Map.Entry e = (Map.Entry)i.next();      String field = (String)e.getKey();      IndexReader reader = (IndexReader)e.getValue();      reader.getTermFreqVector(docNumber, field, mapper);    }  }  public boolean hasNorms(String field) throws IOException {    ensureOpen();    IndexReader reader = ((IndexReader)fieldToReader.get(field));    return reader==null ? false : reader.hasNorms(field);  }  public byte[] norms(String field) throws IOException {    ensureOpen();    IndexReader reader = ((IndexReader)fieldToReader.get(field));    return reader==null ? null : reader.norms(field);  }  public void norms(String field, byte[] result, int offset)    throws IOException {    ensureOpen();    IndexReader reader = ((IndexReader)fieldToReader.get(field));    if (reader!=null)      reader.norms(field, result, offset);  }  protected void doSetNorm(int n, String field, byte value)    throws CorruptIndexException, IOException {    IndexReader reader = ((IndexReader)fieldToReader.get(field));    if (reader!=null)      reader.doSetNorm(n, field, value);  }  public TermEnum terms() throws IOException {    ensureOpen();    return new ParallelTermEnum();  }  public TermEnum terms(Term term) throws IOException {    ensureOpen();    return new ParallelTermEnum(term);  }  public int docFreq(Term term) throws IOException {    ensureOpen();    IndexReader reader = ((IndexReader)fieldToReader.get(term.field()));    return reader==null ? 0 : reader.docFreq(term);  }  public TermDocs termDocs(Term term) throws IOException {    ensureOpen();    return new ParallelTermDocs(term);  }  public TermDocs termDocs() throws IOException {    ensureOpen();    return new ParallelTermDocs();  }  public TermPositions termPositions(Term term) throws IOException {    ensureOpen();    return new ParallelTermPositions(term);  }  public TermPositions termPositions() throws IOException {    ensureOpen();    return new ParallelTermPositions();  }    /**   * Checks recursively if all subreaders are up to date.    */  public boolean isCurrent() throws CorruptIndexException, IOException {    for (int i = 0; i < readers.size(); i++) {      if (!((IndexReader)readers.get(i)).isCurrent()) {        return false;      }    }        // all subreaders are up to date    return true;  }  /**   * Checks recursively if all subindexes are optimized    */  public boolean isOptimized() {    for (int i = 0; i < readers.size(); i++) {      if (!((IndexReader)readers.get(i)).isOptimized()) {        return false;      }    }        // all subindexes are optimized    return true;  }    /** Not implemented.   * @throws UnsupportedOperationException   */  public long getVersion() {    throw new UnsupportedOperationException("ParallelReader does not support this method.");  }  // for testing  IndexReader[] getSubReaders() {    return (IndexReader[]) readers.toArray(new IndexReader[readers.size()]);  }  protected void doCommit() throws IOException {    for (int i = 0; i < readers.size(); i++)      ((IndexReader)readers.get(i)).commit();  }  protected synchronized void doClose() throws IOException {    for (int i = 0; i < readers.size(); i++) {      if (((Boolean) decrefOnClose.get(i)).booleanValue()) {        ((IndexReader)readers.get(i)).decRef();      } else {        ((IndexReader)readers.get(i)).close();      }    }  }  public Collection getFieldNames (IndexReader.FieldOption fieldNames) {    ensureOpen();    Set fieldSet = new HashSet();    for (int i = 0; i < readers.size(); i++) {      IndexReader reader = ((IndexReader)readers.get(i));      Collection names = reader.getFieldNames(fieldNames);      fieldSet.addAll(names);    }    return fieldSet;  }  private class ParallelTermEnum extends TermEnum {    private String field;    private Iterator fieldIterator;    private TermEnum termEnum;    public ParallelTermEnum() throws IOException {      field = (String)fieldToReader.firstKey();      if (field != null)        termEnum = ((IndexReader)fieldToReader.get(field)).terms();    }    public ParallelTermEnum(Term term) throws IOException {      field = term.field();      IndexReader reader = ((IndexReader)fieldToReader.get(field));      if (reader!=null)        termEnum = reader.terms(term);    }    public boolean next() throws IOException {      if (termEnum==null)        return false;      // another term in this field?      if (termEnum.next() && termEnum.term().field()==field)        return true;                              // yes, keep going      termEnum.close();                           // close old termEnum      // find the next field with terms, if any      if (fieldIterator==null) {        fieldIterator = fieldToReader.tailMap(field).keySet().iterator();        fieldIterator.next();                     // Skip field to get next one      }      while (fieldIterator.hasNext()) {        field = (String) fieldIterator.next();        termEnum = ((IndexReader)fieldToReader.get(field)).terms(new Term(field, ""));        Term term = termEnum.term();        if (term!=null && term.field()==field)          return true;        else          termEnum.close();      }       return false;                               // no more fields    }    public Term term() {      if (termEnum==null)        return null;      return termEnum.term();    }    public int docFreq() {      if (termEnum==null)        return 0;      return termEnum.docFreq();    }    public void close() throws IOException {      if (termEnum!=null)        termEnum.close();    }  }  // wrap a TermDocs in order to support seek(Term)  private class ParallelTermDocs implements TermDocs {    protected TermDocs termDocs;    public ParallelTermDocs() {}    public ParallelTermDocs(Term term) throws IOException { seek(term); }    public int doc() { return termDocs.doc(); }    public int freq() { return termDocs.freq(); }    public void seek(Term term) throws IOException {      IndexReader reader = ((IndexReader)fieldToReader.get(term.field()));      termDocs = reader!=null ? reader.termDocs(term) : null;    }    public void seek(TermEnum termEnum) throws IOException {      seek(termEnum.term());    }    public boolean next() throws IOException {      if (termDocs==null)        return false;      return termDocs.next();    }    public int read(final int[] docs, final int[] freqs) throws IOException {      if (termDocs==null)        return 0;      return termDocs.read(docs, freqs);    }    public boolean skipTo(int target) throws IOException {      if (termDocs==null)        return false;      return termDocs.skipTo(target);    }    public void close() throws IOException {      if (termDocs!=null)        termDocs.close();    }  }  private class ParallelTermPositions    extends ParallelTermDocs implements TermPositions {    public ParallelTermPositions() {}    public ParallelTermPositions(Term term) throws IOException { seek(term); }    public void seek(Term term) throws IOException {      IndexReader reader = ((IndexReader)fieldToReader.get(term.field()));      termDocs = reader!=null ? reader.termPositions(term) : null;    }    public int nextPosition() throws IOException {      // It is an error to call this if there is no next position, e.g. if termDocs==null      return ((TermPositions)termDocs).nextPosition();    }    public int getPayloadLength() {      return ((TermPositions)termDocs).getPayloadLength();    }    public byte[] getPayload(byte[] data, int offset) throws IOException {      return ((TermPositions)termDocs).getPayload(data, offset);    }    // TODO: Remove warning after API has been finalized    public boolean isPayloadAvailable() {      return ((TermPositions) termDocs).isPayloadAvailable();    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -