当前位置: 首页>>代码示例>>Java>>正文


Java DocsEnum.nextDoc方法代码示例

本文整理汇总了Java中org.apache.lucene.index.DocsEnum.nextDoc方法的典型用法代码示例。如果您正苦于以下问题:Java DocsEnum.nextDoc方法的具体用法?Java DocsEnum.nextDoc怎么用?Java DocsEnum.nextDoc使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.lucene.index.DocsEnum的用法示例。


在下文中一共展示了DocsEnum.nextDoc方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: fillDocsAndScores

import org.apache.lucene.index.DocsEnum; //导入方法依赖的package包/类
protected void fillDocsAndScores(FixedBitSet matchingDocs, Bits acceptDocs, TermsEnum termsEnum) throws IOException {
  BytesRef spare = new BytesRef();
  DocsEnum docsEnum = null;
  for (int i = 0; i < terms.size(); i++) {
    if (termsEnum.seekExact(terms.get(ords[i], spare))) {
      docsEnum = termsEnum.docs(acceptDocs, docsEnum, DocsEnum.FLAG_NONE);
      float score = TermsIncludingScoreQuery.this.scores[ords[i]];
      for (int doc = docsEnum.nextDoc(); doc != DocIdSetIterator.NO_MORE_DOCS; doc = docsEnum.nextDoc()) {
        matchingDocs.set(doc);
        // In the case the same doc is also related to a another doc, a score might be overwritten. I think this
        // can only happen in a many-to-many relation
        scores[doc] = score;
      }
    }
  }
}
 
开发者ID:europeana,项目名称:search,代码行数:17,代码来源:TermsIncludingScoreQuery.java

示例2: assertDocsEnumEquals

import org.apache.lucene.index.DocsEnum; //导入方法依赖的package包/类
/**
 * checks docs + freqs, sequentially
 */
public void assertDocsEnumEquals(String info, DocsEnum leftDocs, DocsEnum rightDocs, boolean hasFreqs) throws IOException {
  if (leftDocs == null) {
    assertNull(rightDocs);
    return;
  }
  assertEquals(info, -1, leftDocs.docID());
  assertEquals(info, -1, rightDocs.docID());
  int docid;
  while ((docid = leftDocs.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
    assertEquals(info, docid, rightDocs.nextDoc());
    if (hasFreqs) {
      assertEquals(info, leftDocs.freq(), rightDocs.freq());
    }
  }
  assertEquals(info, DocIdSetIterator.NO_MORE_DOCS, rightDocs.nextDoc());
}
 
开发者ID:europeana,项目名称:search,代码行数:20,代码来源:LuceneTestCase.java

示例3: getFirstMatch

import org.apache.lucene.index.DocsEnum; //导入方法依赖的package包/类
/**
 * Returns the first document number containing the term <code>t</code>
 * Returns -1 if no document was found.
 * This method is primarily intended for clients that want to fetch
 * documents using a unique identifier."
 * @return the first document number containing the term
 */
public int getFirstMatch(Term t) throws IOException {
  Fields fields = atomicReader.fields();
  if (fields == null) return -1;
  Terms terms = fields.terms(t.field());
  if (terms == null) return -1;
  BytesRef termBytes = t.bytes();
  final TermsEnum termsEnum = terms.iterator(null);
  if (!termsEnum.seekExact(termBytes)) {
    return -1;
  }
  DocsEnum docs = termsEnum.docs(atomicReader.getLiveDocs(), null, DocsEnum.FLAG_NONE);
  if (docs == null) return -1;
  int id = docs.nextDoc();
  return id == DocIdSetIterator.NO_MORE_DOCS ? -1 : id;
}
 
开发者ID:europeana,项目名称:search,代码行数:23,代码来源:SolrIndexSearcher.java

示例4: getFirstMatch

import org.apache.lucene.index.DocsEnum; //导入方法依赖的package包/类
protected int getFirstMatch(IndexReader r, Term t) throws IOException {
  Fields fields = MultiFields.getFields(r);
  if (fields == null) return -1;
  Terms terms = fields.terms(t.field());
  if (terms == null) return -1;
  BytesRef termBytes = t.bytes();
  final TermsEnum termsEnum = terms.iterator(null);
  if (!termsEnum.seekExact(termBytes)) {
    return -1;
  }
  DocsEnum docs = termsEnum.docs(MultiFields.getLiveDocs(r), null, DocsEnum.FLAG_NONE);
  int id = docs.nextDoc();
  if (id != DocIdSetIterator.NO_MORE_DOCS) {
    int next = docs.nextDoc();
    assertEquals(DocIdSetIterator.NO_MORE_DOCS, next);
  }
  return id == DocIdSetIterator.NO_MORE_DOCS ? -1 : id;
}
 
开发者ID:europeana,项目名称:search,代码行数:19,代码来源:TestRTGBase.java

示例5: fillDocsAndScores

import org.apache.lucene.index.DocsEnum; //导入方法依赖的package包/类
@Override
protected void fillDocsAndScores(FixedBitSet matchingDocs, Bits acceptDocs, TermsEnum termsEnum) throws IOException {
  BytesRef spare = new BytesRef();
  DocsEnum docsEnum = null;
  for (int i = 0; i < terms.size(); i++) {
    if (termsEnum.seekExact(terms.get(ords[i], spare))) {
      docsEnum = termsEnum.docs(acceptDocs, docsEnum, DocsEnum.FLAG_NONE);
      float score = TermsIncludingScoreQuery.this.scores[ords[i]];
      for (int doc = docsEnum.nextDoc(); doc != DocIdSetIterator.NO_MORE_DOCS; doc = docsEnum.nextDoc()) {
        // I prefer this:
        /*if (scores[doc] < score) {
          scores[doc] = score;
          matchingDocs.set(doc);
        }*/
        // But this behaves the same as MVInnerScorer and only then the tests will pass:
        if (!matchingDocs.get(doc)) {
          scores[doc] = score;
          matchingDocs.set(doc);
        }
      }
    }
  }
}
 
开发者ID:yintaoxue,项目名称:read-open-source-code,代码行数:24,代码来源:TermsIncludingScoreQuery.java

示例6: getDocumentsWithWordAsSet

import org.apache.lucene.index.DocsEnum; //导入方法依赖的package包/类
@Override
public void getDocumentsWithWordAsSet(String word, IntOpenHashSet documents) {
    DocsEnum docs = null;
    Term term = new Term(fieldName, word);
    try {
        int baseDocId;
        for (int i = 0; i < reader.length; i++) {
            docs = reader[i].termDocsEnum(term);
            baseDocId = contexts[i].docBase;
            if (docs != null) {
                while (docs.nextDoc() != DocsEnum.NO_MORE_DOCS) {
                    documents.add(baseDocId + docs.docID());
                }
            }
        }
    } catch (IOException e) {
        LOGGER.error("Error while requesting documents for word \"" + word + "\".", e);
    }
}
 
开发者ID:dice-group,项目名称:Palmetto,代码行数:20,代码来源:LuceneCorpusAdapter.java

示例7: getTotalTermFreq

import org.apache.lucene.index.DocsEnum; //导入方法依赖的package包/类
public static long getTotalTermFreq(IndexReader reader, Term term) throws Exception {   
  long totalTF = 0L;
  for (final AtomicReaderContext ctx : reader.leaves()) {
    AtomicReader r = ctx.reader();
    if (!r.hasDeletions()) {
      // TODO: we could do this up front, during the scan
      // (next()), instead of after-the-fact here w/ seek,
      // if the codec supports it and there are no del
      // docs...
      final long totTF = r.totalTermFreq(term);
      if (totTF != -1) {
        totalTF += totTF;
        continue;
      } // otherwise we fall-through
    }
    // note: what should we do if field omits freqs? currently it counts as 1...
    DocsEnum de = r.termDocsEnum(term);
    if (de != null) {
      while (de.nextDoc() != DocIdSetIterator.NO_MORE_DOCS)
        totalTF += de.freq();
    }
  }
  
  return totalTF;
}
 
开发者ID:pkarmstr,项目名称:NYBC,代码行数:26,代码来源:HighFreqTerms.java

示例8: fillDocsAndScores

import org.apache.lucene.index.DocsEnum; //导入方法依赖的package包/类
protected void fillDocsAndScores(FixedBitSet matchingDocs, Bits acceptDocs, TermsEnum termsEnum) throws IOException {
  BytesRef spare = new BytesRef();
  DocsEnum docsEnum = null;
  for (int i = 0; i < terms.size(); i++) {
    if (termsEnum.seekExact(terms.get(ords[i], spare), true)) {
      docsEnum = termsEnum.docs(acceptDocs, docsEnum, DocsEnum.FLAG_NONE);
      float score = TermsIncludingScoreQuery.this.scores[ords[i]];
      for (int doc = docsEnum.nextDoc(); doc != DocIdSetIterator.NO_MORE_DOCS; doc = docsEnum.nextDoc()) {
        matchingDocs.set(doc);
        // In the case the same doc is also related to a another doc, a score might be overwritten. I think this
        // can only happen in a many-to-many relation
        scores[doc] = score;
      }
    }
  }
}
 
开发者ID:pkarmstr,项目名称:NYBC,代码行数:17,代码来源:TermsIncludingScoreQuery.java

示例9: getFirstMatch

import org.apache.lucene.index.DocsEnum; //导入方法依赖的package包/类
/**
 * Returns the first document number containing the term <code>t</code>
 * Returns -1 if no document was found.
 * This method is primarily intended for clients that want to fetch
 * documents using a unique identifier."
 * @return the first document number containing the term
 */
public int getFirstMatch(Term t) throws IOException {
  Fields fields = atomicReader.fields();
  if (fields == null) return -1;
  Terms terms = fields.terms(t.field());
  if (terms == null) return -1;
  BytesRef termBytes = t.bytes();
  final TermsEnum termsEnum = terms.iterator(null);
  if (!termsEnum.seekExact(termBytes, false)) {
    return -1;
  }
  DocsEnum docs = termsEnum.docs(atomicReader.getLiveDocs(), null, DocsEnum.FLAG_NONE);
  if (docs == null) return -1;
  int id = docs.nextDoc();
  return id == DocIdSetIterator.NO_MORE_DOCS ? -1 : id;
}
 
开发者ID:pkarmstr,项目名称:NYBC,代码行数:23,代码来源:SolrIndexSearcher.java

示例10: getFirstMatch

import org.apache.lucene.index.DocsEnum; //导入方法依赖的package包/类
protected int getFirstMatch(IndexReader r, Term t) throws IOException {
  Fields fields = MultiFields.getFields(r);
  if (fields == null) return -1;
  Terms terms = fields.terms(t.field());
  if (terms == null) return -1;
  BytesRef termBytes = t.bytes();
  final TermsEnum termsEnum = terms.iterator(null);
  if (!termsEnum.seekExact(termBytes, false)) {
    return -1;
  }
  DocsEnum docs = termsEnum.docs(MultiFields.getLiveDocs(r), null, DocsEnum.FLAG_NONE);
  int id = docs.nextDoc();
  if (id != DocIdSetIterator.NO_MORE_DOCS) {
    int next = docs.nextDoc();
    assertEquals(DocIdSetIterator.NO_MORE_DOCS, next);
  }
  return id == DocIdSetIterator.NO_MORE_DOCS ? -1 : id;
}
 
开发者ID:netboynb,项目名称:search-core,代码行数:19,代码来源:TestRTGBase.java

示例11: testDocsEnum

import org.apache.lucene.index.DocsEnum; //导入方法依赖的package包/类
@Test
public void testDocsEnum() throws Exception {
  Bits mappedLiveDocs = randomLiveDocs(reader.maxDoc());
  TermsEnum termsEnum = reader.terms(DOCS_ENUM_FIELD).iterator(null);
  assertEquals(SeekStatus.FOUND, termsEnum.seekCeil(new BytesRef(DOCS_ENUM_TERM)));
  DocsEnum docs = termsEnum.docs(mappedLiveDocs, null);

  int doc;
  int prev = -1;
  while ((doc = docs.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
    assertTrue("document " + doc + " marked as deleted", mappedLiveDocs == null || mappedLiveDocs.get(doc));
    assertEquals("incorrect value; doc " + doc, sortedValues[doc].intValue(), Integer.parseInt(reader.document(doc).get(ID_FIELD)));
    while (++prev < doc) {
      assertFalse("document " + prev + " not marked as deleted", mappedLiveDocs == null || mappedLiveDocs.get(prev));
    }
  }
  while (++prev < reader.maxDoc()) {
    assertFalse("document " + prev + " not marked as deleted", mappedLiveDocs == null || mappedLiveDocs.get(prev));
  }

  DocsEnum reuse = docs;
  docs = termsEnum.docs(mappedLiveDocs, reuse);
  if (docs instanceof SortingDocsEnum) {
    assertTrue(((SortingDocsEnum) docs).reused(reuse)); // make sure reuse worked
  }
  doc = -1;
  prev = -1;
  while ((doc = docs.advance(doc + 1)) != DocIdSetIterator.NO_MORE_DOCS) {
    assertTrue("document " + doc + " marked as deleted", mappedLiveDocs == null || mappedLiveDocs.get(doc));
    assertEquals("incorrect value; doc " + doc, sortedValues[doc].intValue(), Integer.parseInt(reader.document(doc).get(ID_FIELD)));
    while (++prev < doc) {
      assertFalse("document " + prev + " not marked as deleted", mappedLiveDocs == null || mappedLiveDocs.get(prev));
    }
  }
  while (++prev < reader.maxDoc()) {
    assertFalse("document " + prev + " not marked as deleted", mappedLiveDocs == null || mappedLiveDocs.get(prev));
  }
}
 
开发者ID:europeana,项目名称:search,代码行数:39,代码来源:SorterTestBase.java

示例12: assertDocsSkippingEquals

import org.apache.lucene.index.DocsEnum; //导入方法依赖的package包/类
/**
 * checks advancing docs
 */
public void assertDocsSkippingEquals(String info, IndexReader leftReader, int docFreq, DocsEnum leftDocs, DocsEnum rightDocs, boolean hasFreqs) throws IOException {
  if (leftDocs == null) {
    assertNull(rightDocs);
    return;
  }
  int docid = -1;
  int averageGap = leftReader.maxDoc() / (1+docFreq);
  int skipInterval = 16;

  while (true) {
    if (random().nextBoolean()) {
      // nextDoc()
      docid = leftDocs.nextDoc();
      assertEquals(info, docid, rightDocs.nextDoc());
    } else {
      // advance()
      int skip = docid + (int) Math.ceil(Math.abs(skipInterval + random().nextGaussian() * averageGap));
      docid = leftDocs.advance(skip);
      assertEquals(info, docid, rightDocs.advance(skip));
    }
    
    if (docid == DocIdSetIterator.NO_MORE_DOCS) {
      return;
    }
    if (hasFreqs) {
      assertEquals(info, leftDocs.freq(), rightDocs.freq());
    }
  }
}
 
开发者ID:europeana,项目名称:search,代码行数:33,代码来源:LuceneTestCase.java

示例13: assertDocsEnum

import org.apache.lucene.index.DocsEnum; //导入方法依赖的package包/类
/**
 * checks docs + freqs, sequentially
 */
public void assertDocsEnum(DocsEnum leftDocs, DocsEnum rightDocs) throws Exception {
  if (leftDocs == null) {
    assertNull(rightDocs);
    return;
  }
  assertEquals(-1, leftDocs.docID());
  assertEquals(-1, rightDocs.docID());
  int docid;
  while ((docid = leftDocs.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
    assertEquals(docid, rightDocs.nextDoc());
    // we don't assert freqs, they are allowed to be different
  }
  assertEquals(DocIdSetIterator.NO_MORE_DOCS, rightDocs.nextDoc());
}
 
开发者ID:europeana,项目名称:search,代码行数:18,代码来源:TestBlockPostingsFormat3.java

示例14: assertDocsSkipping

import org.apache.lucene.index.DocsEnum; //导入方法依赖的package包/类
/**
 * checks advancing docs
 */
public void assertDocsSkipping(int docFreq, DocsEnum leftDocs, DocsEnum rightDocs) throws Exception {
  if (leftDocs == null) {
    assertNull(rightDocs);
    return;
  }
  int docid = -1;
  int averageGap = MAXDOC / (1+docFreq);
  int skipInterval = 16;

  while (true) {
    if (random().nextBoolean()) {
      // nextDoc()
      docid = leftDocs.nextDoc();
      assertEquals(docid, rightDocs.nextDoc());
    } else {
      // advance()
      int skip = docid + (int) Math.ceil(Math.abs(skipInterval + random().nextGaussian() * averageGap));
      docid = leftDocs.advance(skip);
      assertEquals(docid, rightDocs.advance(skip));
    }
    
    if (docid == DocIdSetIterator.NO_MORE_DOCS) {
      return;
    }
    // we don't assert freqs, they are allowed to be different
  }
}
 
开发者ID:europeana,项目名称:search,代码行数:31,代码来源:TestBlockPostingsFormat3.java

示例15: hasAccess

import org.apache.lucene.index.DocsEnum; //导入方法依赖的package包/类
private boolean hasAccess(BytesRef term) throws IOException {
  DocsEnum docsEnum = in.docs(null, null, DocsEnum.FLAG_NONE);
  int docId;
  while ((docId = docsEnum.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
    if (_accessControlReader.hasAccess(ReadType.TERMS_ENUM, docId)) {
      return true;
    }
  }
  return false;
}
 
开发者ID:apache,项目名称:incubator-blur,代码行数:11,代码来源:SecureAtomicReader.java


注:本文中的org.apache.lucene.index.DocsEnum.nextDoc方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。