Package org.apache.lucene.facet.old

Examples of org.apache.lucene.facet.old.ScoredDocIDsIterator


    IntPriorityQueue pq = new IntPriorityQueue(sampleSize);
    /*
     * Convert every value in the collection to a hashed "weight" value, and insert
     * into a bounded PQ (retains only sampleSize highest weights).
     */
    ScoredDocIDsIterator it = collection.iterator();
    MI mi = null;
    while (it.next()) {
      if (mi == null) {
        mi = new MI();
      }
      mi.value = (int) (it.getDocID() * PHI_32) & 0x7FFFFFFF;
      mi = pq.insertWithOverflow(mi);
    }
    if (returnTimings) {
      times[1] = System.currentTimeMillis();
    }
View Full Code Here


    // sort so that we can scan docs in order
    final int[] docids = sampleSet;
    Arrays.sort(docids);
    final float[] scores = new float[docids.length];
    // fetch scores and compute size
    ScoredDocIDsIterator it = allDocIds.iterator();
    int n = 0;
    while (it.next() && n < docids.length) {
      int doc = it.getDocID();
      if (doc == docids[n]) {
        scores[n] = it.getScore();
        ++n;
      }
    }
    final int size = n;

    return new ScoredDocIDs() {

      @Override
      public DocIdSet getDocIDs() {
        return new DocIdSet() {

          @Override
          public boolean isCacheable() { return true; }

          @Override
          public DocIdSetIterator iterator() {
            return new DocIdSetIterator() {

              private int next = -1;

              @Override
              public int advance(int target) {
                while (next < size && docids[next++] < target) {
                }
                return next == size ? NO_MORE_DOCS : docids[next];
              }

              @Override
              public int docID() {
                return docids[next];
              }

              @Override
              public int nextDoc() {
                if (++next >= size) {
                  return NO_MORE_DOCS;
                }
                return docids[next];
              }

              @Override
              public long cost() {
                return size;
              }
            };
          }
        };
      }

      @Override
      public ScoredDocIDsIterator iterator() {
        return new ScoredDocIDsIterator() {

          int next = -1;

          @Override
          public boolean next() { return ++next < size; }
View Full Code Here

      public DocIdSet getDocIDs() { return docIdSet; }

      @Override
      public ScoredDocIDsIterator iterator() throws IOException {
        final DocIdSetIterator docIterator = docIdSet.iterator();
        return new ScoredDocIDsIterator() {
          @Override
          public boolean next() {
            try {
              return docIterator.nextDoc() != DocIdSetIterator.NO_MORE_DOCS;
            } catch (IOException e) {
View Full Code Here

  @Override
  protected SampleResult createSample(ScoredDocIDs docids, int actualSize, int sampleSetSize) throws IOException {
    final int[] sample = new int[sampleSetSize];
    final int maxStep = (actualSize * 2 ) / sampleSetSize; //floor
    int remaining = actualSize;
    ScoredDocIDsIterator it = docids.iterator();
    int i = 0;
    // select sample docs with random skipStep, make sure to leave sufficient #docs for selection after last skip
    while (i<sample.length && remaining>(sampleSetSize-maxStep-i)) {
      int skipStep = 1 + random.nextInt(maxStep);
      // Skip over 'skipStep' documents
      for (int j=0; j<skipStep; j++) {
        it.next();
        -- remaining;
      }
      sample[i++] = it.getDocID();
    }
    // Add leftover documents to the sample set
    while (i<sample.length) {
      it.next();
      sample[i++] = it.getDocID();
    }
    ScoredDocIDs sampleRes = ScoredDocIdsUtils.createScoredDocIDsSubset(docids, sample);
    SampleResult res = new SampleResult(sampleRes, sampleSetSize/(double)actualSize);
    return res;
  }
View Full Code Here

   * @param sample The array in which to return the sample.
   * @param times The times of three events, for measuring performance.
   */
  private static void sample1(ScoredDocIDs collection, int collectionSize, int[] sample, long[] times)
  throws IOException {
    ScoredDocIDsIterator it = collection.iterator();
    if (returnTimings) {
      times[0] = System.currentTimeMillis();
    }
    int sampleSize = sample.length;
    int prime = findGoodStepSize(collectionSize, sampleSize);
    int mod = prime % collectionSize;
    if (returnTimings) {
      times[1] = System.currentTimeMillis();
    }
    int sampleCount = 0;
    int index = 0;
    for (; sampleCount < sampleSize;) {
      if (index + mod < collectionSize) {
        for (int i = 0; i < mod; i++, index++) {
          it.next();
        }
      } else {
        index = index + mod - collectionSize;
        it = collection.iterator();
        for (int i = 0; i < index; i++) {
          it.next();
        }
      }
      sample[sampleCount++] = it.getDocID();
    }
    if (returnTimings) {
      times[2] = System.currentTimeMillis();
    }
  }
View Full Code Here

    @Override
    public ScoredDocIDsIterator iterator() {
      try {
        final DocIdSetIterator iter = getDocIDs().iterator();
        return new ScoredDocIDsIterator() {
          @Override
          public boolean next() {
            try {
              return iter.nextDoc() != DocIdSetIterator.NO_MORE_DOCS;
            } catch (IOException e) {
View Full Code Here

    @Override
    public ScoredDocIDsIterator iterator() {
      try {
        final DocIdSetIterator iter = getDocIDs().iterator();
        return new ScoredDocIDsIterator() {
          @Override
          public boolean next() {
            try {
              return iter.nextDoc() != DocIdSetIterator.NO_MORE_DOCS;
            } catch (IOException e) {
View Full Code Here

TOP

Related Classes of org.apache.lucene.facet.old.ScoredDocIDsIterator

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.