Package org.apache.lucene.index.NumericFieldUpdates

Examples of org.apache.lucene.index.NumericFieldUpdates.UpdatesIterator


                }
              } else if (mergingFields != null) {
                // document isn't deleted, check if any of the fields have an update to it
                int newDoc = -1;
                for (int idx = 0; idx < mergingFields.length; idx++) {
                  UpdatesIterator updatesIter = updatesIters[idx];
                  if (updatesIter.doc() == j) { // document has an update
                    if (mergedDeletesAndUpdates == null) {
                      mergedDeletesAndUpdates = readerPool.get(merge.info, true);
                      docMap = getDocMap(merge, mergeState);
                    }
                    if (newDoc == -1) { // map once per all field updates, but only if there are any updates
                      newDoc = docMap.map(docUpto);
                    }
                    String field = mergingFields[idx];
                    NumericFieldUpdates fieldUpdates = mergedFieldUpdates.get(field);
                    if (fieldUpdates == null) {
                      // an approximantion of maxDoc, used to compute best bitsPerValue
                      fieldUpdates = new NumericFieldUpdates.PackedNumericFieldUpdates(mergeState.segmentInfo.getDocCount());
                      mergedFieldUpdates.put(field, fieldUpdates);
                    }
                    fieldUpdates.add(newDoc, updatesIter.value() == null ? NumericUpdate.MISSING : updatesIter.value());
                    updatesIter.nextDoc(); // advance to next document
                  } else {
                    assert updatesIter.doc() > j : "updateDoc=" + updatesIter.doc() + " curDoc=" + j;
                  }
                }
              }
              docUpto++;
            }
          }
        } else if (mergingFields != null) {
          // need to check each non-deleted document if it has any updates
          for (int j = 0; j < docCount; j++) {
            if (prevLiveDocs.get(j)) {
              // document isn't deleted, check if any of the fields have an update to it
              int newDoc = -1;
              for (int idx = 0; idx < mergingFields.length; idx++) {
                UpdatesIterator updatesIter = updatesIters[idx];
                if (updatesIter.doc() == j) { // document has an update
                  if (mergedDeletesAndUpdates == null) {
                    mergedDeletesAndUpdates = readerPool.get(merge.info, true);
                    docMap = getDocMap(merge, mergeState);
                  }
                  if (newDoc == -1) { // map once per all field updates, but only if there are any updates
                    newDoc = docMap.map(docUpto);
                  }
                  String field = mergingFields[idx];
                  NumericFieldUpdates fieldUpdates = mergedFieldUpdates.get(field);
                  if (fieldUpdates == null) {
                    // an approximantion of maxDoc, used to compute best bitsPerValue
                    fieldUpdates = new NumericFieldUpdates.PackedNumericFieldUpdates(mergeState.segmentInfo.getDocCount());
                    mergedFieldUpdates.put(field, fieldUpdates);
                  }
                  fieldUpdates.add(newDoc, updatesIter.value() == null ? NumericUpdate.MISSING : updatesIter.value());
                  updatesIter.nextDoc(); // advance to next document
                } else {
                  assert updatesIter.doc() > j : "updateDoc=" + updatesIter.doc() + " curDoc=" + j;
                }
              }
              // advance docUpto for every non-deleted document
              docUpto++;
            } else {
              // advance all iters beyond the deleted document
              skipDeletedDoc(updatesIters, j);
            }
          }
        } else {
          docUpto += info.info.getDocCount() - info.getDelCount() - rld.getPendingDeleteCount();
        }
      } else if (currentLiveDocs != null) {
        assert currentLiveDocs.length() == docCount;
        // This segment had no deletes before but now it
        // does:
        for (int j = 0; j < docCount; j++) {
          if (!currentLiveDocs.get(j)) {
            if (mergedDeletesAndUpdates == null) {
              mergedDeletesAndUpdates = readerPool.get(merge.info, true);
              mergedDeletesAndUpdates.initWritableLiveDocs();
              initWritableLiveDocs = true;
              docMap = getDocMap(merge, mergeState);
            } else if (!initWritableLiveDocs) { // mergedDeletes was initialized by field-updates changes
              mergedDeletesAndUpdates.initWritableLiveDocs();
              initWritableLiveDocs = true;
            }
            mergedDeletesAndUpdates.delete(docMap.map(docUpto));
            if (mergingFields != null) { // advance all iters beyond the deleted document
              skipDeletedDoc(updatesIters, j);
            }
          } else if (mergingFields != null) {
            // document isn't deleted, check if any of the fields have an update to it
            int newDoc = -1;
            for (int idx = 0; idx < mergingFields.length; idx++) {
              UpdatesIterator updatesIter = updatesIters[idx];
              if (updatesIter.doc() == j) { // document has an update
                if (mergedDeletesAndUpdates == null) {
                  mergedDeletesAndUpdates = readerPool.get(merge.info, true);
                  docMap = getDocMap(merge, mergeState);
                }
                if (newDoc == -1) { // map once per all field updates, but only if there are any updates
                  newDoc = docMap.map(docUpto);
                }
                String field = mergingFields[idx];
                NumericFieldUpdates fieldUpdates = mergedFieldUpdates.get(field);
                if (fieldUpdates == null) {
                  // an approximantion of maxDoc, used to compute best bitsPerValue
                  fieldUpdates = new NumericFieldUpdates.PackedNumericFieldUpdates(mergeState.segmentInfo.getDocCount());
                  mergedFieldUpdates.put(field, fieldUpdates);
                }
                fieldUpdates.add(newDoc, updatesIter.value() == null ? NumericUpdate.MISSING : updatesIter.value());
                updatesIter.nextDoc(); // advance to next document
              } else {
                assert updatesIter.doc() > j : "field=" + mergingFields[idx] + " updateDoc=" + updatesIter.doc() + " curDoc=" + j;
              }
            }
          }
          docUpto++;
        }
      } else if (mergingFields != null) {
        // no deletions before or after, but there were updates
        for (int j = 0; j < docCount; j++) {
          int newDoc = -1;
          for (int idx = 0; idx < mergingFields.length; idx++) {
            UpdatesIterator updatesIter = updatesIters[idx];
            if (updatesIter.doc() == j) { // document has an update
              if (mergedDeletesAndUpdates == null) {
                mergedDeletesAndUpdates = readerPool.get(merge.info, true);
                docMap = getDocMap(merge, mergeState);
              }
              if (newDoc == -1) { // map once per all field updates, but only if there are any updates
                newDoc = docMap.map(docUpto);
              }
              String field = mergingFields[idx];
              NumericFieldUpdates fieldUpdates = mergedFieldUpdates.get(field);
              if (fieldUpdates == null) {
                // an approximantion of maxDoc, used to compute best bitsPerValue
                fieldUpdates = new NumericFieldUpdates.PackedNumericFieldUpdates(mergeState.segmentInfo.getDocCount());
                mergedFieldUpdates.put(field, fieldUpdates);
              }
              fieldUpdates.add(newDoc, updatesIter.value() == null ? NumericUpdate.MISSING : updatesIter.value());
              updatesIter.nextDoc(); // advance to next document
            } else {
              assert updatesIter.doc() > j : "updateDoc=" + updatesIter.doc() + " curDoc=" + j;
            }
          }
          // advance docUpto for every non-deleted document
          docUpto++;
        }
View Full Code Here


                }
              } else if (mergingFields != null) {
                // document isn't deleted, check if any of the fields have an update to it
                int newDoc = -1;
                for (int idx = 0; idx < mergingFields.length; idx++) {
                  UpdatesIterator updatesIter = updatesIters[idx];
                  if (updatesIter.doc() == j) { // document has an update
                    if (mergedDeletesAndUpdates == null) {
                      mergedDeletesAndUpdates = readerPool.get(merge.info, true);
                      docMap = getDocMap(merge, mergeState);
                    }
                    if (newDoc == -1) { // map once per all field updates, but only if there are any updates
                      newDoc = docMap.map(docUpto);
                    }
                    String field = mergingFields[idx];
                    NumericFieldUpdates fieldUpdates = mergedFieldUpdates.get(field);
                    if (fieldUpdates == null) {
                      // an approximantion of maxDoc, used to compute best bitsPerValue
                      fieldUpdates = new NumericFieldUpdates.PackedNumericFieldUpdates(mergeState.segmentInfo.getDocCount());
                      mergedFieldUpdates.put(field, fieldUpdates);
                    }
                    fieldUpdates.add(newDoc, updatesIter.value() == null ? NumericUpdate.MISSING : updatesIter.value());
                    updatesIter.nextDoc(); // advance to next document
                  } else {
                    assert updatesIter.doc() > j : "updateDoc=" + updatesIter.doc() + " curDoc=" + j;
                  }
                }
              }
              docUpto++;
            }
          }
        } else if (mergingFields != null) {
          // need to check each non-deleted document if it has any updates
          for (int j = 0; j < docCount; j++) {
            if (prevLiveDocs.get(j)) {
              // document isn't deleted, check if any of the fields have an update to it
              int newDoc = -1;
              for (int idx = 0; idx < mergingFields.length; idx++) {
                UpdatesIterator updatesIter = updatesIters[idx];
                if (updatesIter.doc() == j) { // document has an update
                  if (mergedDeletesAndUpdates == null) {
                    mergedDeletesAndUpdates = readerPool.get(merge.info, true);
                    docMap = getDocMap(merge, mergeState);
                  }
                  if (newDoc == -1) { // map once per all field updates, but only if there are any updates
                    newDoc = docMap.map(docUpto);
                  }
                  String field = mergingFields[idx];
                  NumericFieldUpdates fieldUpdates = mergedFieldUpdates.get(field);
                  if (fieldUpdates == null) {
                    // an approximantion of maxDoc, used to compute best bitsPerValue
                    fieldUpdates = new NumericFieldUpdates.PackedNumericFieldUpdates(mergeState.segmentInfo.getDocCount());
                    mergedFieldUpdates.put(field, fieldUpdates);
                  }
                  fieldUpdates.add(newDoc, updatesIter.value() == null ? NumericUpdate.MISSING : updatesIter.value());
                  updatesIter.nextDoc(); // advance to next document
                } else {
                  assert updatesIter.doc() > j : "updateDoc=" + updatesIter.doc() + " curDoc=" + j;
                }
              }
              // advance docUpto for every non-deleted document
              docUpto++;
            } else {
              // advance all iters beyond the deleted document
              skipDeletedDoc(updatesIters, j);
            }
          }
        } else {
          docUpto += info.info.getDocCount() - info.getDelCount() - rld.getPendingDeleteCount();
        }
      } else if (currentLiveDocs != null) {
        assert currentLiveDocs.length() == docCount;
        // This segment had no deletes before but now it
        // does:
        for (int j = 0; j < docCount; j++) {
          if (!currentLiveDocs.get(j)) {
            if (mergedDeletesAndUpdates == null) {
              mergedDeletesAndUpdates = readerPool.get(merge.info, true);
              mergedDeletesAndUpdates.initWritableLiveDocs();
              initWritableLiveDocs = true;
              docMap = getDocMap(merge, mergeState);
            } else if (!initWritableLiveDocs) { // mergedDeletes was initialized by field-updates changes
              mergedDeletesAndUpdates.initWritableLiveDocs();
              initWritableLiveDocs = true;
            }
            mergedDeletesAndUpdates.delete(docMap.map(docUpto));
            if (mergingFields != null) { // advance all iters beyond the deleted document
              skipDeletedDoc(updatesIters, j);
            }
          } else if (mergingFields != null) {
            // document isn't deleted, check if any of the fields have an update to it
            int newDoc = -1;
            for (int idx = 0; idx < mergingFields.length; idx++) {
              UpdatesIterator updatesIter = updatesIters[idx];
              if (updatesIter.doc() == j) { // document has an update
                if (mergedDeletesAndUpdates == null) {
                  mergedDeletesAndUpdates = readerPool.get(merge.info, true);
                  docMap = getDocMap(merge, mergeState);
                }
                if (newDoc == -1) { // map once per all field updates, but only if there are any updates
                  newDoc = docMap.map(docUpto);
                }
                String field = mergingFields[idx];
                NumericFieldUpdates fieldUpdates = mergedFieldUpdates.get(field);
                if (fieldUpdates == null) {
                  // an approximantion of maxDoc, used to compute best bitsPerValue
                  fieldUpdates = new NumericFieldUpdates.PackedNumericFieldUpdates(mergeState.segmentInfo.getDocCount());
                  mergedFieldUpdates.put(field, fieldUpdates);
                }
                fieldUpdates.add(newDoc, updatesIter.value() == null ? NumericUpdate.MISSING : updatesIter.value());
                updatesIter.nextDoc(); // advance to next document
              } else {
                assert updatesIter.doc() > j : "field=" + mergingFields[idx] + " updateDoc=" + updatesIter.doc() + " curDoc=" + j;
              }
            }
          }
          docUpto++;
        }
      } else if (mergingFields != null) {
        // no deletions before or after, but there were updates
        for (int j = 0; j < docCount; j++) {
          int newDoc = -1;
          for (int idx = 0; idx < mergingFields.length; idx++) {
            UpdatesIterator updatesIter = updatesIters[idx];
            if (updatesIter.doc() == j) { // document has an update
              if (mergedDeletesAndUpdates == null) {
                mergedDeletesAndUpdates = readerPool.get(merge.info, true);
                docMap = getDocMap(merge, mergeState);
              }
              if (newDoc == -1) { // map once per all field updates, but only if there are any updates
                newDoc = docMap.map(docUpto);
              }
              String field = mergingFields[idx];
              NumericFieldUpdates fieldUpdates = mergedFieldUpdates.get(field);
              if (fieldUpdates == null) {
                // an approximantion of maxDoc, used to compute best bitsPerValue
                fieldUpdates = new NumericFieldUpdates.PackedNumericFieldUpdates(mergeState.segmentInfo.getDocCount());
                mergedFieldUpdates.put(field, fieldUpdates);
              }
              fieldUpdates.add(newDoc, updatesIter.value() == null ? NumericUpdate.MISSING : updatesIter.value());
              updatesIter.nextDoc(); // advance to next document
            } else {
              assert updatesIter.doc() > j : "updateDoc=" + updatesIter.doc() + " curDoc=" + j;
            }
          }
          // advance docUpto for every non-deleted document
          docUpto++;
        }
View Full Code Here

TOP

Related Classes of org.apache.lucene.index.NumericFieldUpdates.UpdatesIterator

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.