public static IndexReader openReader(IndexManager... indexManagers) { return openReader( null, null, indexManagers, true ); }
public static IndexReader openReader(IndexManager... indexManagers) { return openReader( null, null, indexManagers, true ); }
public static IndexReader openReader(Map<String, IndexManager> indexManagers) { IndexManager[] uniqueIndexManagers = indexManagers.values().toArray( new IndexManager[indexManagers.size()] ); return openReader( uniqueIndexManagers ); }
public static IndexReader openReader(Map<String, IndexManager> indexManagers) { IndexManager[] uniqueIndexManagers = indexManagers.values().toArray( new IndexManager[indexManagers.size()] ); return openReader( uniqueIndexManagers ); }
@Override public IndexReader open(Class<?>... entities) { if ( entities.length == 0 ) { throw log.needAtLeastOneIndexedEntityType(); } HashMap<String, IndexManager> indexManagers = new HashMap<>(); for ( Class<?> type : entities ) { collectAllIndexManagersInto( searchFactory.getSafeIndexBindingForEntity( type ), indexManagers ); } return MultiReaderFactory.openReader( indexManagers ); }
@Override public IndexReader open(Class<?>... entities) { if ( entities.length == 0 ) { throw log.needAtLeastOneIndexedEntityType(); } HashMap<String, IndexManager> indexManagers = new HashMap<>(); for ( Class<?> type : entities ) { collectAllIndexManagersInto( searchFactory.getSafeIndexBindingForEntity( type ), indexManagers ); } return MultiReaderFactory.openReader( indexManagers ); }
@Override public IndexReader open(IndexedTypeSet types) { if ( types.isEmpty() ) { throw log.needAtLeastOneIndexedEntityType(); } HashMap<String, IndexManager> indexManagers = new HashMap<>(); for ( IndexedTypeIdentifier type : types ) { collectAllIndexManagersInto( searchFactory.getSafeIndexBindingForEntity( type ), indexManagers ); } return MultiReaderFactory.openReader( indexManagers ); }
@Override public IndexReader open(String... indexNames) { TreeSet<String> names = new TreeSet<String>(); for ( String name : indexNames ) { if ( name != null ) { names.add( name ); } } final int size = names.size(); if ( size == 0 ) { throw log.needAtLeastOneIndexName(); } String[] indexManagerNames = names.toArray( new String[size] ); IndexManagerHolder managerSource = searchFactory.getIndexManagerHolder(); IndexManager[] managers = new IndexManager[size]; for ( int i = 0; i < size; i++ ) { String indexName = indexManagerNames[i]; managers[i] = managerSource.getIndexManager( indexName ); if ( managers[i] == null ) { throw log.requestedIndexNotDefined( indexName ); } } return MultiReaderFactory.openReader( managers ); }
@Override public IndexReader open(IndexedTypeSet types) { if ( types.isEmpty() ) { throw log.needAtLeastOneIndexedEntityType(); } HashMap<String, IndexManager> indexManagers = new HashMap<>(); for ( IndexedTypeIdentifier type : types ) { collectAllIndexManagersInto( searchFactory.getSafeIndexBindingForEntity( type ), indexManagers ); } return MultiReaderFactory.openReader( indexManagers ); }
@Override public IndexReader open(String... indexNames) { TreeSet<String> names = new TreeSet<String>(); for ( String name : indexNames ) { if ( name != null ) { names.add( name ); } } final int size = names.size(); if ( size == 0 ) { throw log.needAtLeastOneIndexName(); } String[] indexManagerNames = names.toArray( new String[size] ); IndexManagerHolder managerSource = searchFactory.getIndexManagerHolder(); IndexManager[] managers = new IndexManager[size]; for ( int i = 0; i < size; i++ ) { String indexName = indexManagerNames[i]; managers[i] = managerSource.getIndexManager( indexName ); if ( managers[i] == null ) { throw log.requestedIndexNotDefined( indexName ); } } return MultiReaderFactory.openReader( managers ); }
); final IndexReader compoundReader = MultiReaderFactory.openReader( sortConfigurations.build(), sort,
); final IndexReader compoundReader = MultiReaderFactory.openReader( sortConfigurations.build(), sort,
@Test public void testUninvertingReaderIsUsedIfNotAllSortsAreCovered() throws Exception { ExtendedSearchIntegrator integrator = factoryHolder.getSearchFactory(); EntityIndexBinding binding = integrator.getIndexBinding( PERSON_TYPE ); Set<IndexManager> indexManagers = binding.getIndexManagerSelector().forFilters( new FullTextFilterImpl[0] ); Sort sort = new Sort( new SortField( "ageForIntSorting", Type.INT ), new SortField( "ageForStringSorting", Type.STRING ) ); SortConfigurations configuredSorts = new SortConfigurations.Builder() .setIndex( "person" ) .setEntityType( PERSON_TYPE ) .addSortableFields( Arrays.asList( new SortableFieldMetadata.Builder( "ageForStringSorting" ).build() ) ) .build(); IndexManager[] indexManagersArray = indexManagers.toArray( new IndexManager[indexManagers.size()] ); try ( ManagedMultiReader reader = (ManagedMultiReader) MultiReaderFactory.openReader( configuredSorts, sort, indexManagersArray, true ) ) { List<? extends IndexReader> actualReaders = reader.getSubReaders(); assertThat( actualReaders ).hasSize( 1 ); assertThat( actualReaders.get( 0 ).getClass().getSimpleName() ).isEqualTo( "UninvertingDirectoryReader" ); } }
try ( ManagedMultiReader reader = (ManagedMultiReader) MultiReaderFactory.openReader( configuredSorts, sort,
@Test public void testStandardReaderIsUsedIfAllSortsAreCovered() throws Exception { ExtendedSearchIntegrator integrator = factoryHolder.getSearchFactory(); EntityIndexBinding binding = integrator.getIndexBinding( PERSON_TYPE ); Set<IndexManager> indexManagers = binding.getIndexManagerSelector().forFilters( new FullTextFilterImpl[0] ); Sort sort = new Sort( new SortField( "ageForIntSorting", Type.INT ), new SortField( "ageForStringSorting", Type.STRING ) ); SortConfigurations configuredSorts = new SortConfigurations.Builder() .setIndex( "test" ) .setEntityType( PERSON_TYPE ) .addSortableFields( Arrays.asList( new SortableFieldMetadata.Builder( "ageForIntSorting" ).build(), new SortableFieldMetadata.Builder( "ageForStringSorting" ).build() ) ) .build(); IndexManager[] indexManagersArray = indexManagers.toArray( new IndexManager[indexManagers.size()] ); try ( ManagedMultiReader reader = (ManagedMultiReader) MultiReaderFactory.openReader( configuredSorts, sort, indexManagersArray, false ) ) { List<? extends IndexReader> actualReaders = reader.getSubReaders(); assertThat( actualReaders ).hasSize( 1 ); assertThat( actualReaders.get( 0 ).getClass().getSimpleName() ).isEqualTo( "StandardDirectoryReader" ); } }