예제 #1
0
  public void testDocsWithField() throws Exception {
    Directory dir = newDirectory();

    IndexWriterConfig iwc = newIndexWriterConfig(random(), null);
    iwc.setMergePolicy(newLogMergePolicy());
    RandomIndexWriter iw = new RandomIndexWriter(random(), dir, iwc);

    int numDocs = TEST_NIGHTLY ? atLeast(500) : atLeast(50);
    for (int i = 0; i < numDocs; i++) {
      Document doc = new Document();
      if (random().nextInt(4) >= 0) {
        doc.add(new NumericDocValuesField("numbers", random().nextLong()));
      }
      doc.add(new NumericDocValuesField("numbersAlways", random().nextLong()));
      iw.addDocument(doc);
      if (random().nextInt(17) == 0) {
        iw.commit();
      }
    }
    DirectoryReader ir = iw.getReader();
    iw.forceMerge(1);
    DirectoryReader ir2 = iw.getReader();
    LeafReader merged = getOnlyLeafReader(ir2);
    iw.close();

    Bits multi = MultiDocValues.getDocsWithField(ir, "numbers");
    Bits single = merged.getDocsWithField("numbers");
    if (multi == null) {
      assertNull(single);
    } else {
      assertEquals(single.length(), multi.length());
      for (int i = 0; i < numDocs; i++) {
        assertEquals(single.get(i), multi.get(i));
      }
    }

    multi = MultiDocValues.getDocsWithField(ir, "numbersAlways");
    single = merged.getDocsWithField("numbersAlways");
    assertEquals(single.length(), multi.length());
    for (int i = 0; i < numDocs; i++) {
      assertEquals(single.get(i), multi.get(i));
    }
    ir.close();
    ir2.close();
    dir.close();
  }
 @Override
 protected boolean useRandomAccess(Bits bits, long filterCost) {
   int multiplier = threshold;
   if (threshold == -1) {
     // default
     multiplier = 100;
   }
   return filterCost * multiplier > bits.length();
 }
예제 #3
0
 @Override
 public Bits getLiveDocs() {
   Bits liveDocs = super.getLiveDocs();
   if (liveDocs != null) {
     assert maxDoc() == liveDocs.length();
     liveDocs = new AssertingBits(liveDocs);
   } else {
     assert maxDoc() == numDocs();
     assert !hasDeletions();
   }
   return liveDocs;
 }
예제 #4
0
 @Override
 public int length() {
   assertThread("Bits", creationThread);
   return in.length();
 }
예제 #5
0
 public static void printDelDocs(Bits bits) {
   if (bits == null) return;
   for (int x = 0; x < bits.length(); x++) {
     System.out.println(x + ":" + bits.get(x));
   }
 }