sortConfigurations.build(), sort, indexManagers,
sortConfigurations.build(), sort, indexManagers,
@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" ); } }
@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" ); } }