Package org.hibernate.search.jpa

Examples of org.hibernate.search.jpa.FullTextEntityManager


         for (DocumentModel delete : delSet) {
           
            long delId = delete.getId();
           
            // HibernateSearchのFulTextEntityManagerを用意。削除済みのものはインデックスから削除する
            final FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(em);
            fullTextEntityManager.purge(DocumentModel.class, delId);
           
            if (IInfoModel.STATUS_TMP.equals(delete.getStatus())) {
                // 仮文書の場合は抹消スル
                DocumentModel dm = em.find(DocumentModel.class, delId);
                em.remove(dm);
View Full Code Here


                            .setParameter("ids", ids).getResultList();                  
                }               
                break;
               
            case PatientSearchSpec.FULL_TEXT_SEARCH:
                final FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(em);
                final Analyzer analyzer = fullTextEntityManager.getSearchFactory().getAnalyzer(DocumentModel.class);
                final org.apache.lucene.util.Version ver = org.apache.lucene.util.Version.LUCENE_35;
                final String pk = "karte.patient.id:";
               
                // preparing seach text with narrowing list
                String searchText = spec.getSearchText();

                if (! ids.isEmpty()) {
                    StringBuilder sb = new StringBuilder();
                    sb.append(pk).append(String.valueOf(ids.get(0)));
                    for (int i=1; i<ids.size(); i++) {
                        sb.append(" OR ").append(pk).append(String.valueOf(ids.get(i)));
                    }               
                    searchText = String.format("(%s) AND (%s)", spec.getSearchText(), sb.toString());
                }
              
                try {
                    // create native Lucene query
                    org.apache.lucene.queryParser.QueryParser parser = new QueryParser(ver, "modules.beanBytes", analyzer);           
                    parser.setAutoGeneratePhraseQueries(true)// http://lucene.jugem.jp/?eid=403
                    org.apache.lucene.search.Query luceneQuery = parser.parse(searchText);
                    // wrap Lucene query in a javax.persistence.Query
                    javax.persistence.Query persistenceQuery = fullTextEntityManager.createFullTextQuery(luceneQuery, DocumentModel.class);
           
                    // Too many results (>32768) cause
                    // java.io.IOException: Tried to send an out-of-range integer as a 2-byte value: xxxxx
                    // 暫定的に 1000 にしておく
                    persistenceQuery.setMaxResults(1000);
View Full Code Here

     *      coordinator-environment default-timeout="14400"
     */
    @Override
    public void makeInitialIndex() {
       
        FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(em);
        MassIndexer massIndexer = fullTextEntityManager.createIndexer(DocumentModel.class);
       
        massIndexer.purgeAllOnStart(true)
                .batchSizeToLoadObjects(30)
                .threadsForSubsequentFetching(8)
                .threadsToLoadObjects(4)
View Full Code Here

        boostPerField.put(bookFields[0], (float) 4);
        boostPerField.put(bookFields[1], (float) 3);
        boostPerField.put(bookFields[2], (float) 4);
        boostPerField.put(bookFields[3], (float) .5);

        FullTextEntityManager ftEm = org.hibernate.search.jpa.Search.getFullTextEntityManager((EntityManager) em);

        QueryParser parser = new MultiFieldQueryParser(bookFields, ftEm.getSearchFactory().getAnalyzer("customanalyzer"),
                boostPerField);

        org.apache.lucene.search.Query luceneQuery;
        luceneQuery = parser.parse(searchQuery);

        final FullTextQuery query = ftEm.createFullTextQuery(luceneQuery, Book.class);

        return query;
    }
View Full Code Here

    em.getTransaction().commit();
    em.close();
  }

  public void testIndex() throws Exception {
    FullTextEntityManager em = Search.getFullTextEntityManager( factory.createEntityManager() );
    em.getTransaction().begin();
    Bretzel bretzel = new Bretzel( 23, 34 );
    em.persist( bretzel );
    em.getTransaction().commit();
    em.clear();

    //Not really a unit test but a test that shows the method call without failing
    //FIXME port the index test
    em.getTransaction().begin();
    em.index( em.find( Bretzel.class, bretzel.getId() ) );
    em.getTransaction().commit();

    em.getTransaction().begin();
    em.remove( em.find( Bretzel.class, bretzel.getId() ) );
    em.getTransaction().commit();
    em.close();
  }
View Full Code Here

   *
   * @throws Exception
   *             in case the test fails.
   */
  public void testSerialization() throws Exception {
    FullTextEntityManager em = Search.getFullTextEntityManager(factory
        .createEntityManager());

    indexSearchAssert(em);
   
    File tmpFile = File.createTempFile("entityManager", "ser", null);
    serializeEM(em, tmpFile);
    em = deserializeEM(tmpFile);
   
    indexSearchAssert(em);
   
    em.close();
   
    // cleanup
    tmpFile.delete();
  }
View Full Code Here

    // cleanup
    tmpFile.delete();
  }

  private FullTextEntityManager deserializeEM(File tmpFile) throws ClassNotFoundException {
    FullTextEntityManager em = null;
    FileInputStream fis = null;
    ObjectInputStream in = null;
    try {
      fis = new FileInputStream(tmpFile);
      in = new ObjectInputStream(fis);
View Full Code Here

* @author Emmanuel Bernard
*/
public class EntityManagerTest extends JPATestCase {

  public void testQuery() throws Exception {
    FullTextEntityManager em = Search.getFullTextEntityManager( factory.createEntityManager() );
    em.getTransaction().begin();
    Bretzel bretzel = new Bretzel( 23, 34 );
    em.persist( bretzel );
    em.getTransaction().commit();
    em.clear();
    em.getTransaction().begin();
    QueryParser parser = new QueryParser( "title", new StopAnalyzer() );
    Query query = parser.parse( "saltQty:noword" );
    assertEquals( 0, em.createFullTextQuery( query ).getResultList().size() );
    query = new TermQuery( new Term("saltQty", "23.0") );
    assertEquals( "getResultList", 1, em.createFullTextQuery( query ).getResultList().size() );
    assertEquals( "getSingleResult and object retrieval", 23f,
        ( (Bretzelem.createFullTextQuery( query ).getSingleResult() ).getSaltQty() );
    assertEquals( 1, em.createFullTextQuery( query ).getResultSize() );
    em.getTransaction().commit();

    em.clear();

    em.getTransaction().begin();
    em.remove( em.find( Bretzel.class, bretzel.getId() ) );
    em.getTransaction().commit();
    em.close();
  }
View Full Code Here

    targetMethod = "updateTopDocs",
    helper = "org.hibernate.search.testsupport.BytemanHelper",
    action = "sleepASecond();",
    name = "Enable QueryHits slow down")
  public void testQueryTimeoutException() throws Exception {
    FullTextEntityManager em = Search.getFullTextEntityManager( factory.createEntityManager() );
    em.getTransaction().begin();
    for ( long i = 0; i < 1000; i++ ) {
      Clock clock = new Clock( Long.valueOf( i ), "Model cat A" + i, ( i % 2 == 0 ) ? "Seiko" : "Swatch", Long.valueOf( 2000 + i ) );
      em.persist( clock );
    }
    em.getTransaction().commit();

    em.clear();

    em.getTransaction().begin();
    final QueryBuilder builder = em.getSearchFactory().buildQueryBuilder().forEntity( Clock.class ).get();
    Query query = builder.keyword().onField( "brand" ).matching( "Seiko" ).createQuery();
    FullTextQuery hibernateQuery = em.createFullTextQuery( query, Clock.class );

    hibernateQuery.setHint( "javax.persistence.query.timeout", 100 ); //not too low or we can't reproduce it consistently
    try {
      hibernateQuery.getResultSize();
      fail( "timeout exception should happen" );
    }
    catch (QueryTimeoutException e) {
      //good
      e.printStackTrace();
    }
    catch (Exception e) {
      fail( "Expected a QueryTimeoutException" );
    }
    em.getTransaction().commit();
    em.clear();

    em.getTransaction().begin();
    assertEquals( 1000, em.createQuery( "delete from " + Clock.class.getName() ).executeUpdate() );
    em.getTransaction().commit();

    em.close();

  }
View Full Code Here

  }

  @Test
  public void testLimitFetchingTime() {
    FullTextEntityManager em = Search.getFullTextEntityManager( factory.createEntityManager() );
    em.getTransaction().begin();
    for ( long i = 0; i < 1000; i++ ) {
      Clock clock = new Clock( Long.valueOf( i ), "Model cat A" + i, ( i % 2 == 0 ) ? "Seiko" : "Swatch", Long.valueOf( 2000 + i ) );
      em.persist( clock );
    }
    em.getTransaction().commit();

    em.clear();

    em.getTransaction().begin();
    final QueryBuilder builder = em.getSearchFactory().buildQueryBuilder().forEntity( Clock.class ).get();
    Query query = builder.keyword().onField( "brand" ).matching( "Seiko" ).createQuery();
    FullTextQuery hibernateQuery = em.createFullTextQuery( query, Clock.class );
    List results = hibernateQuery.getResultList();
    assertEquals( 500, results.size() );

    em.clear();

    query = builder.keyword().onField( "brand" ).matching( "Swatch" ).createQuery();
    hibernateQuery = em.createFullTextQuery( query, Clock.class );
    hibernateQuery.limitExecutionTimeTo( 1, TimeUnit.NANOSECONDS );
    List result = hibernateQuery.getResultList();
    System.out.println( "Result size early: " + result.size() );
    assertEquals( "Test early failure, before the number of results are even fetched", 0, result.size() );
    if ( result.size() == 0 ) {
      //sometimes, this
      assertTrue( hibernateQuery.hasPartialResults() );
    }

    em.clear();

    //We cannot test intermediate limit, Lucene / hibernate: too unpredictable

//    hibernateQuery = fts.createFullTextQuery( query, Clock.class );
//    hibernateQuery.limitFetchingTime( 1000, TimeUnit.NANOSECONDS );
//    results = hibernateQuery.list();
//    System.out.println("Result size partial: " + results.size() );
//    assertTrue("Regular failure when some elements are fetched", 0 < results.size() && results.size() < 500 );
//    assertTrue( hibernateQuery.hasPartialResults() );
//
//    fts.clear();

    hibernateQuery = em.createFullTextQuery( query, Clock.class );
    hibernateQuery.limitExecutionTimeTo( 30, TimeUnit.SECONDS );
    results = hibernateQuery.getResultList();
    assertEquals( "Test below limit termination", 500, results.size() );
    assertFalse( hibernateQuery.hasPartialResults() );

    em.getTransaction().commit();

    em.clear();

    em.getTransaction().begin();
    assertEquals( 1000, em.createQuery( "delete from " + Clock.class.getName() ).executeUpdate() );
    em.getTransaction().commit();

    em.close();
  }
View Full Code Here

TOP

Related Classes of org.hibernate.search.jpa.FullTextEntityManager

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.