Java 类org.apache.lucene.index.FilterDirectoryReader 实例源码

项目:elasticsearch_my    文件:MockEngineSupport.java   
public MockEngineSupport(EngineConfig config, Class<? extends FilterDirectoryReader> wrapper) {
    Settings settings = config.getIndexSettings().getSettings();
    shardId = config.getShardId();
    filterCache = config.getQueryCache();
    filterCachingPolicy = config.getQueryCachingPolicy();
    final long seed =  config.getIndexSettings().getValue(ESIntegTestCase.INDEX_TEST_SEED_SETTING);
    Random random = new Random(seed);
    final double ratio = WRAP_READER_RATIO.get(settings);
    boolean wrapReader = random.nextDouble() < ratio;
    if (logger.isTraceEnabled()) {
        logger.trace("Using [{}] for shard [{}] seed: [{}] wrapReader: [{}]", this.getClass().getName(), shardId, seed, wrapReader);
    }
    mockContext = new MockContext(random, wrapReader, wrapper, settings);
    this.searcherCloseable = new SearcherCloseable();
    LuceneTestCase.closeAfterSuite(searcherCloseable); // only one suite closeable per Engine
    this.disableFlushOnClose = DISABLE_FLUSH_ON_CLOSE.get(settings);
}
项目:elasticsearch_my    文件:FieldMaskingReader.java   
public FieldMaskingReader(String field, DirectoryReader in) throws IOException {
    super(in, new FilterDirectoryReader.SubReaderWrapper() {
        @Override
        public LeafReader wrap(LeafReader reader) {
            return new FieldFilterLeafReader(reader, Collections.singleton(field), true);
        }
    });
    this.field = field;

}
项目:elasticsearch_my    文件:ElasticsearchDirectoryReader.java   
/**
 * Tries to unwrap the given reader until the first {@link ElasticsearchDirectoryReader} instance is found or <code>null</code> if no instance is found;
 */
public static ElasticsearchDirectoryReader getElasticsearchDirectoryReader(DirectoryReader reader) {
    if (reader instanceof FilterDirectoryReader) {
        if (reader instanceof ElasticsearchDirectoryReader) {
            return (ElasticsearchDirectoryReader) reader;
        } else {
            // We need to use FilterDirectoryReader#getDelegate and not FilterDirectoryReader#unwrap, because
            // If there are multiple levels of filtered leaf readers then with the unwrap() method it immediately
            // returns the most inner leaf reader and thus skipping of over any other filtered leaf reader that
            // may be instance of ElasticsearchLeafReader. This can cause us to miss the shardId.
            return getElasticsearchDirectoryReader(((FilterDirectoryReader) reader).getDelegate());
        }
    }
    return null;
}
项目:gerrit    文件:WrappableSearcherManager.java   
/**
 * Expert: creates a searcher from the provided {@link IndexReader} using the provided {@link
 * SearcherFactory}. NOTE: this decRefs incoming reader on throwing an exception.
 */
@SuppressWarnings("resource")
public static IndexSearcher getSearcher(SearcherFactory searcherFactory, IndexReader reader)
    throws IOException {
  boolean success = false;
  final IndexSearcher searcher;
  try {
    searcher = searcherFactory.newSearcher(reader, null);
    // Modification for Gerrit: Allow searcherFactory to transitively wrap the
    // provided reader.
    IndexReader unwrapped = searcher.getIndexReader();
    while (true) {
      if (unwrapped == reader) {
        break;
      } else if (unwrapped instanceof FilterDirectoryReader) {
        unwrapped = ((FilterDirectoryReader) unwrapped).getDelegate();
      } else if (unwrapped instanceof FilterLeafReader) {
        unwrapped = ((FilterLeafReader) unwrapped).getDelegate();
      } else {
        break;
      }
    }

    if (unwrapped != reader) {
      throw new IllegalStateException(
          "SearcherFactory must wrap the provided reader (got "
              + searcher.getIndexReader()
              + " but expected "
              + reader
              + ")");
    }
    success = true;
  } finally {
    if (!success) {
      reader.decRef();
    }
  }
  return searcher;
}
项目:elasticsearch_my    文件:MockEngineFactoryPlugin.java   
protected Class<? extends FilterDirectoryReader> getReaderWrapperClass() {
    return AssertingDirectoryReader.class;
}
项目:elasticsearch_my    文件:MockInternalEngine.java   
MockInternalEngine(EngineConfig config,  Class<? extends FilterDirectoryReader> wrapper) throws EngineException {
    super(config);
    randomizeFlushOnClose = config.getIndexSettings().isOnSharedFilesystem() == false;
    wrapperClass = wrapper;

}
项目:elasticsearch_my    文件:MockShadowEngine.java   
MockShadowEngine(EngineConfig config, Class<? extends FilterDirectoryReader> wrapper) {
    super(config);
    this.support = new MockEngineSupport(config, wrapper);
}
项目:elasticsearch_my    文件:MockEngineFactory.java   
public MockEngineFactory(Class<? extends FilterDirectoryReader> wrapper) {
    this.wrapper = wrapper;
}
项目:elasticsearch_my    文件:MockEngineSupport.java   
public MockContext(Random random, boolean wrapReader, Class<? extends FilterDirectoryReader> wrapper, Settings indexSettings) {
    this.random = random;
    this.wrapReader = wrapReader;
    this.wrapper = wrapper;
    this.indexSettings = indexSettings;
}
项目:elasticsearch_my    文件:ElasticsearchDirectoryReader.java   
private ElasticsearchDirectoryReader(DirectoryReader in, FilterDirectoryReader.SubReaderWrapper wrapper, ShardId shardId) throws IOException {
    super(in, wrapper);
    this.wrapper = wrapper;
    this.shardId = shardId;
}
项目:elasticsearch_my    文件:RandomExceptionCircuitBreakerIT.java   
@Override
protected Class<? extends FilterDirectoryReader> getReaderWrapperClass() {
    return RandomExceptionDirectoryReaderWrapper.class;
}
项目:elasticsearch_my    文件:SearchWithRandomExceptionsIT.java   
@Override
protected Class<? extends FilterDirectoryReader> getReaderWrapperClass() {
    return RandomExceptionDirectoryReaderWrapper.class;
}