Package org.hibernate.search.engine.spi

Examples of org.hibernate.search.engine.spi.SearchFactoryImplementor


  public SearchFactoryHolder factoryHolder = new SearchFactoryHolder( Book.class )
      .withService( SerializationProvider.class, countingServiceInstance );

  @Test
  public void testPropertiesIndexing() {
    SearchFactoryImplementor searchFactory = factoryHolder.getSearchFactory();
    IndexManager indexManager = searchFactory.getIndexManagerHolder().getIndexManager( "books" );
    Assert.assertNotNull( indexManager );
    Assert.assertEquals( 0, countingServiceInstance.serializerGetCount.get() );
    Assert.assertEquals( 0, countingServiceInstance.deserializerGetCount.get() );

    //Serialize some work:
View Full Code Here


  @Rule
  public SearchFactoryHolder sfHolder = new SearchFactoryHolder( Guest.class );

  @Test
  public void filtersTest() {
    SearchFactoryImplementor searchFactory = sfHolder.getSearchFactory();
    Assert.assertNotNull( searchFactory.getIndexManagerHolder().getIndexManager( "guests" ) );

    { // Store guest "Thorin Oakenshield" in the index
      Guest lastDwarf = new Guest();
      lastDwarf.id = 13l;
      lastDwarf.name = "Thorin Oakenshield";

      Work work = new Work( lastDwarf, lastDwarf.id, WorkType.ADD, false );
      TransactionContextForTest tc = new TransactionContextForTest();
      searchFactory.getWorker().performWork( work, tc );
      tc.end();
    }

    QueryBuilder guestQueryBuilder = searchFactory.buildQueryBuilder()
        .forEntity( Guest.class )
        .get();

    Query queryAllGuests = guestQueryBuilder.all().createQuery();

    List<EntityInfo> queryEntityInfos = searchFactory.createHSQuery()
      .luceneQuery( queryAllGuests )
      .targetedEntities( Arrays.asList( new Class<?>[]{ Guest.class } ) )
      .queryEntityInfos();

    Assert.assertEquals( 1, queryEntityInfos.size() );
    Assert.assertEquals( 13L, queryEntityInfos.get( 0 ).getId() );

    RecordingFilter filter = new RecordingFilter( "name" );
    List<EntityInfo> filteredQueryEntityInfos = searchFactory.createHSQuery()
        .luceneQuery( queryAllGuests )
        .targetedEntities( Arrays.asList( new Class<?>[]{ Guest.class } ) )
        .filter( filter )
        .queryEntityInfos();

    checkFilterInspectedAllSegments( filter );
    expectedTermsForFilter( filter, "thorin", "oakenshield" );
    Assert.assertEquals( 1, filteredQueryEntityInfos.size() );
    Assert.assertEquals( 13L, filteredQueryEntityInfos.get( 0 ).getId() );

    { // Store guest "Balin"
      Guest balin = new Guest();
      balin.id = 7l;
      balin.name = "Balin";

      Work work = new Work( balin, balin.id, WorkType.ADD, false );
      TransactionContextForTest tc = new TransactionContextForTest();
      searchFactory.getWorker().performWork( work, tc );
      tc.end();
    }

    List<EntityInfo> queryEntityInfosAgain = searchFactory.createHSQuery()
      .luceneQuery( queryAllGuests )
      .targetedEntities( Arrays.asList( new Class<?>[]{ Guest.class } ) )
      .queryEntityInfos();

    Assert.assertEquals( 2, queryEntityInfosAgain.size() );
    Assert.assertEquals( 13L, queryEntityInfosAgain.get( 0 ).getId() );
    Assert.assertEquals( 7L, queryEntityInfosAgain.get( 1 ).getId() );

    RecordingFilter secondFilter = new RecordingFilter( "name" );
    List<EntityInfo> secondFilteredQueryEntityInfos = searchFactory.createHSQuery()
        .luceneQuery( queryAllGuests )
        .targetedEntities( Arrays.asList( new Class<?>[]{ Guest.class } ) )
        .filter( secondFilter )
        .queryEntityInfos();
View Full Code Here

   * which would be obtained from a freshly checked out IndexReader.
   *
   * @param filter test filter instance
   */
  private void checkFilterInspectedAllSegments(RecordingFilter filter) {
    SearchFactoryImplementor searchFactory = sfHolder.getSearchFactory();
    IndexReader currentIndexReader = searchFactory.getIndexReaderAccessor().open( Guest.class );
    try {
      List<IndexReader> allSubReaders = getSubIndexReaders( (MultiReader) currentIndexReader );
      for ( IndexReader ir : allSubReaders ) {
        Assert.assertTrue( filter.visitedReaders.contains( ir ) );
      }
      for ( IndexReader ir : filter.visitedReaders ) {
        Assert.assertTrue( allSubReaders.contains( ir ) );
      }
    }
    finally {
      searchFactory.getIndexReaderAccessor().close( currentIndexReader );
    }
  }
View Full Code Here

    SearchConfigurationForTest configuration = new SearchConfigurationForTest()
        .addClass( A.class )
        .addClass( AbstractA.class )
        .addClass( D.class );

    SearchFactoryImplementor searchFactory = new SearchFactoryBuilder().configuration( configuration ).buildSearchFactory();
    searchFactory.close();
    Assert.assertEquals( "Wrong invocation count", 1, BytemanHelper.getAndResetInvocationCount() );
  }
View Full Code Here

    IndexManager indexManager = indexManagersRegistry.get( indexName );
    if ( indexManager != null ) {
      indexManager.addContainedEntity( entityIndexBinding.getDocumentBuilder().getBeanClass() );
      return indexManager;
    }
    SearchFactoryImplementor searchFactory = entityIndexBinding.getSearchFactory();
    WorkerBuildContext context;
    //known implementations of SearchFactory passed are MutableSearchFactory and ImmutableSearchFactory
    if ( WorkerBuildContext.class.isAssignableFrom( searchFactory.getClass() ) ) {
      context = (WorkerBuildContext) searchFactory;
    }
    else {
      throw log.assertionFailureCannotCastToWorkerBuilderContext( searchFactory.getClass() );
    }

    Properties properties = entityIndexBinding.getProperties();
    if ( shardName != null ) {
      properties = new MaskedProperty( properties, shardName, properties );
View Full Code Here

  /**
   * @param cfg The SearchFactory configuration to be tested
   * @param fieldName The expected name of the ID field
   */
  private void storeBooksViaProvidedId(SearchConfigurationForTest cfg, String fieldName, boolean matchTitle) {
    SearchFactoryImplementor sf = null;
    try {
      //Should fail right here when @ProvidedId is not enabled:
      sf = new SearchFactoryBuilder().configuration( cfg ).buildSearchFactory();

      Book book = new Book();
      book.title = "Less is nice";
      book.text = "When using Infinispan Query, users have to always remember to add @ProvidedId on their classes" +
          " or a nasty exception will remind them. Can't we just assume it's always annotated?";
      String isbn = "some entity-external id";
      Work work = new Work( book, isbn, WorkType.ADD, false );
      TransactionContextForTest tc = new TransactionContextForTest();
      sf.getWorker().performWork( work, tc );
      tc.end();

      QueryBuilder queryBuilder = sf.buildQueryBuilder()
          .forEntity( Book.class )
          .get();

      Query query = queryBuilder.keyword()
        .onField( fieldName )
        .ignoreAnalyzer()
        .matching( matchTitle ? book.title : isbn )
        .createQuery();

      int queryResultSize = sf.createHSQuery()
          .luceneQuery( query )
          .targetedEntities( Arrays.asList( new Class<?>[]{ Book.class } ) )
          .queryResultSize();
      Assert.assertEquals( 1, queryResultSize );
    }
    finally {
      if ( sf != null ) {
        sf.close();
      }
    }
  }
View Full Code Here

        .property( "id", ElementType.FIELD ).documentId()
        .property( "title", ElementType.FIELD ).field();

    cfg.setProgrammaticMapping( mapping );
    cfg.addClass( Document.class );
    SearchFactoryImplementor sf = new SearchFactoryBuilder().configuration( cfg ).buildSearchFactory();
    try {
      Assert.assertEquals( expectedIndexManagerClass, extractDocumentIndexManagerClassName( sf, "documents" ) );
      // trigger a SearchFactory rebuild:
      sf.addClasses( Dvd.class );
      // and verify the option is not lost:
      Assert.assertEquals( expectedIndexManagerClass, extractDocumentIndexManagerClassName( sf, "dvds" ) );
      Assert.assertEquals( expectedIndexManagerClass, extractDocumentIndexManagerClassName( sf, "documents" ) );
    }
    finally {
      sf.close();
    }
  }
View Full Code Here

      .property( "id", ElementType.FIELD ).documentId()
      .property( "title", ElementType.FIELD ).field()
      ;
    cfg.setProgrammaticMapping( mapping );
    cfg.addClass( Document.class );
    SearchFactoryImplementor sf = new SearchFactoryBuilder().configuration( cfg ).buildSearchFactory();
    try {
      EntityIndexBinding indexBindingForEntity = sf.getIndexBinding( Document.class );
      DirectoryBasedIndexManager indexManager = (DirectoryBasedIndexManager) indexBindingForEntity.getIndexManagers()[0];
      OptimizerStrategy optimizerStrategy = indexManager.getOptimizerStrategy();
      Assert.assertTrue( type.isAssignableFrom( optimizerStrategy.getClass() ) );
    }
    finally {
      sf.close();
    }
  }
View Full Code Here

  @Rule
  public SearchFactoryHolder sfHolder = new SearchFactoryHolder( buildMappingDefinition() );

  @Test
  public void mutationTest() {
    SearchFactoryImplementor searchFactory = sfHolder.getSearchFactory();

    Assert.assertNull( searchFactory.getIndexManagerHolder().getIndexManager( "phoneNumbersIndex" ) );
    searchFactory.addClasses( TelephoneRecord.class );
    Assert.assertNotNull( searchFactory.getIndexManagerHolder().getIndexManager( "phoneNumbersIndex" ) );

    Assert.assertNull( searchFactory.getIndexManagerHolder().getIndexManager( "addressBookIndex" ) );
    searchFactory.addClasses( AddressBook.class );
    Assert.assertNotNull( searchFactory.getIndexManagerHolder().getIndexManager( "addressBookIndex" ) );
  }
View Full Code Here

    manualConfiguration.addClass( Document.class );
  }

  @Test
  public void testDefaultWorker() {
    SearchFactoryImplementor searchFactoryImplementor =
        new SearchFactoryBuilder().configuration( manualConfiguration ).buildSearchFactory();
    assertNotNull( "Worker should have been created", searchFactoryImplementor.getWorker() );
    assertTrue( "Wrong worker class", searchFactoryImplementor.getWorker() instanceof TransactionalWorker );
  }
View Full Code Here

TOP

Related Classes of org.hibernate.search.engine.spi.SearchFactoryImplementor

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.