org.hibernate.search.reader.impl.MultiReaderFactory Maven / Gradle / Ivy
/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or .
*/
package org.hibernate.search.reader.impl;
import java.io.IOException;
import java.util.Map;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.search.Sort;
import org.hibernate.search.indexes.spi.IndexManager;
import org.hibernate.search.query.engine.impl.SortConfigurations;
import org.hibernate.search.util.logging.impl.Log;
import org.hibernate.search.util.logging.impl.LoggerFactory;
import java.lang.invoke.MethodHandles;
/**
* Creates and closes the IndexReaders encompassing multiple indexes.
*
* @author Sanne Grinovero (C) 2011 Red Hat Inc.
*/
public final class MultiReaderFactory {
private static final Log log = LoggerFactory.make( MethodHandles.lookup() );
private MultiReaderFactory() {
//not allowed
}
public static IndexReader openReader(Map indexManagers) {
IndexManager[] uniqueIndexManagers = indexManagers.values().toArray( new IndexManager[indexManagers.size()] );
return openReader( uniqueIndexManagers );
}
public static IndexReader openReader(IndexManager... indexManagers) {
return openReader( null, null, indexManagers, true );
}
public static IndexReader openReader(SortConfigurations configuredSorts, Sort sort, IndexManager[] indexManagers, boolean indexUninvertingAllowed) {
if ( indexManagers.length == 0 ) {
return null;
}
else {
//everything should be the same so wrap in an MultiReader
try {
return ManagedMultiReader.createInstance( indexManagers, configuredSorts, sort, indexUninvertingAllowed );
}
catch (IOException e) {
throw log.ioExceptionOnMultiReaderRefresh( e );
}
}
}
public static void closeReader(IndexReader multiReader) {
if ( multiReader == null ) {
return;
}
try {
//This used to be more complex, complexity is now hidden into
//org.hibernate.search.reader.impl.ManagedMultiReader#doClose()
multiReader.close();
}
catch (IOException e) {
//The implementation of IndexReader we use would actually never throw
//an IOException, so just in case user is passing a custom IndexReader.
log.couldNotCloseResource( e );
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy