@SuppressWarnings("unchecked") private static <T> List<T> doSearch(Session session, Class<T> clazz, Integer entityId) { FullTextSession fullTextSession = Search.getFullTextSession( session ); Transaction tx = fullTextSession.beginTransaction(); FullTextQuery query = fullTextSession.createFullTextQuery( new TermQuery( new Term( "id", entityId.toString() ) ), clazz ); List<T> result = query.list(); tx.commit(); return result; } }
private List<WorkingPerson> search(String field, String value) { FullTextSession session = Search.getFullTextSession( getSession() ); @SuppressWarnings("unchecked") List<WorkingPerson> result = session .createFullTextQuery( searchQueryForValue( field, value, session ) ) .list(); return result; }
public int countBusLineByDatabaseCount() { FullTextSession fullTextSession = Search.getFullTextSession( openSession() ); Transaction tx = fullTextSession.beginTransaction(); int count = fullTextSession.createCriteria( BusLine.class ).list().size(); tx.commit(); fullTextSession.close(); return count; }
@Test public void testMultipleUpdatesTriggeredByContainedIn() { PersonalContact contact = createTestData(); FullTextSession s = Search.getFullTextSession( openSession( ) ); s.getTransaction().begin(); contact = (PersonalContact) s.load( PersonalContact.class, contact.getId() ); contact.setEmail( "spam@hibernate.org" ); s.getTransaction().commit(); s.close(); }
@Test public void testObjectTypeFilteringTwoClasses() throws Exception { Session session = openSession(); Transaction tx = session.beginTransaction(); FullTextSession fullTextSession = Search.getFullTextSession( session ); FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery, Author.class, Music.class ); List result = fullTextQuery.list(); assertEquals( "Should match the author and music only", 2, result.size() ); tx.commit(); fullTextSession.close(); }
@Override @Before public void setUp() throws Exception { super.setUp(); FullTextSession fullTextSession = Search.getFullTextSession( openSession() ); Transaction tx = fullTextSession.beginTransaction(); for ( int i = 0; i < 100; i++ ) { TestEntity entity = new TestEntity( i, "document-" + i ); fullTextSession.persist( entity ); } tx.commit(); fullTextSession.close(); }
@Test public void testObjectTypeFilteringSingleClass() throws Exception { Session session = openSession(); Transaction tx = session.beginTransaction(); FullTextSession fullTextSession = Search.getFullTextSession( session ); FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery, Music.class ); List result = fullTextQuery.list(); assertEquals( "Should match the music only", 1, result.size() ); tx.commit(); fullTextSession.close(); }
static FullTextSession prepareSomeData(SearchTestBase testCase) { FullTextSession fullTextSession = Search.getFullTextSession( testCase.openSession() ); fullTextSession.beginTransaction(); Nation france = new Nation( "France", "FR" ); fullTextSession.save( france ); Book ceylonBook = new Book(); ceylonBook.setTitle( "Ceylon in Action" ); ceylonBook.setFirstPublishedIn( france ); fullTextSession.save( ceylonBook ); fullTextSession.getTransaction().commit(); return fullTextSession; }
@Test public void testImplicitObjectTypeFiltering() throws Exception { Session session = openSession(); Transaction tx = session.beginTransaction(); FullTextSession fullTextSession = Search.getFullTextSession( session ); FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery ); List result = fullTextQuery.list(); assertEquals( "Should match all types", 3, result.size() ); tx.commit(); fullTextSession.close(); }
public void assertFindsByRoadName(String analyzedRoadname) { FullTextSession fullTextSession = Search.getFullTextSession( openSession() ); Transaction tx = fullTextSession.beginTransaction(); TermQuery ftQuery = new TermQuery( new Term( "stops.roadName", analyzedRoadname ) ); FullTextQuery query = fullTextSession.createFullTextQuery( ftQuery, BusLine.class ); query.setProjection( "busLineName" ); assertEquals( 1, query.list().size() ); List results = query.list(); String resultName = (String) ( (Object[]) results.get( 0 ) )[0]; assertEquals( "Linea 64", resultName ); tx.commit(); fullTextSession.close(); }
@Test public void testBooleanProperty() throws Exception { Session s = openSession(); FullTextSession session = Search.getFullTextSession( s ); Transaction tx = s.beginTransaction(); QueryDescriptor query = ElasticsearchQueries.fromJson( "{ 'query': { 'term' : { 'active' : 'true' } } }" ); List<?> result = session.createFullTextQuery( query, GolfPlayer.class ) .setProjection( ElasticsearchProjectionConstants.ID ) .list(); assertThat( result ).hasSize( 1 ); Object[] projection = (Object[]) result.iterator().next(); assertThat( projection[0] ).isEqualTo( 1L ); tx.commit(); s.close(); }
@Test public void testDynamicShardsAreTargetingInQuery() throws Exception { insert( elephant, spider, bear ); Session session = openSession(); Transaction tx = session.beginTransaction(); FullTextSession fts = Search.getFullTextSession( session ); QueryParser parser = new QueryParser( "id", TestConstants.stopAnalyzer ); List results = fts.createFullTextQuery( parser.parse( "name:bear OR name:elephant OR name:spider" ) ).list(); assertEquals( "Either double insert, single update, or query fails with shards", 3, results.size() ); tx.commit(); session.close(); }
@Test public void testStringMappedNumericProperty() throws Exception { Session s = openSession(); FullTextSession session = Search.getFullTextSession( s ); Transaction tx = s.beginTransaction(); QueryDescriptor query = ElasticsearchQueries.fromJson( "{ 'query': { 'match' : { 'puttingStrength' : '2.5' } } }" ); List<?> result = session.createFullTextQuery( query, GolfPlayer.class ) .setProjection( ElasticsearchProjectionConstants.ID, "puttingStrength" ) .list(); assertThat( result ).hasSize( 1 ); Object[] projection = (Object[]) result.iterator().next(); assertThat( projection[0] ).isEqualTo( 1L ); assertThat( projection[1] ).isEqualTo( 2.5D ); tx.commit(); s.close(); }
@Test public void testObjectTypeFilteringThreeClasses() throws Exception { Session session = openSession(); Transaction tx = session.beginTransaction(); FullTextSession fullTextSession = Search.getFullTextSession( session ); FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery, Author.class, Music.class, Book.class ); List result = fullTextQuery.list(); assertEquals( "Should match the author, music and book", 3, result.size() ); fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery ); result = fullTextQuery.list(); assertEquals( "Should match all types", 3, result.size() ); tx.commit(); fullTextSession.close(); }
@Test public void testNumericFieldQuery() throws Exception { Session s = openSession(); FullTextSession session = Search.getFullTextSession( s ); Transaction tx = s.beginTransaction(); QueryDescriptor query = ElasticsearchQueries.fromJson( "{ 'query': { 'range' : { 'wordCount' : { 'gte' : 8, 'lt' : 10 } } } }" ); List<?> result = session.createFullTextQuery( query ).list(); assertThat( result ).extracting( "title" ).containsExactlyInAnyOrder( "Latest in ORM", "ORM for beginners" ); tx.commit(); s.close(); }
@Test public void testGetResultSize() throws Exception { Session s = openSession(); FullTextSession session = Search.getFullTextSession( s ); Transaction tx = s.beginTransaction(); QueryDescriptor query = ElasticsearchQueries.fromJson( "{ 'query': { 'match' : { 'abstract' : 'Hibernate' } } }" ); FullTextQuery fullTextQuery = session.createFullTextQuery( query, ScientificArticle.class ); assertThat( fullTextQuery.getResultSize() ).isEqualTo( 4 ); tx.commit(); s.close(); }
@Test public void testIndexSharing() throws Exception { Session s = openSession(); FullTextSession session = Search.getFullTextSession( s ); Transaction tx = s.beginTransaction(); QueryDescriptor query = ElasticsearchQueries.fromJson( "{ 'query': { 'match' : { 'title' : 'findings' } } }" ); List<?> result = session.createFullTextQuery( query, MasterThesis.class, BachelorThesis.class ).list(); assertThat( result ).extracting( "title" ).containsExactlyInAnyOrder( "Great findings", "Latest findings" ); tx.commit(); s.close(); }
@Test public void testRestrictionByType() throws Exception { Session s = openSession(); FullTextSession session = Search.getFullTextSession( s ); Transaction tx = s.beginTransaction(); QueryDescriptor query = ElasticsearchQueries.fromJson( "{ 'query': { 'match' : { 'abstract' : 'Hibernate' } } }" ); List<?> result = session.createFullTextQuery( query, ResearchPaper.class ).list(); assertThat( result ).extracting( "title" ).containsExactlyInAnyOrder( "Very important research on Hibernate", "Some research" ); tx.commit(); s.close(); }
public int countBusLinesByFullText() { FullTextSession fullTextSession = Search.getFullTextSession( openSession() ); Transaction tx = fullTextSession.beginTransaction(); org.apache.lucene.search.Query ftQuery = new MatchAllDocsQuery(); FullTextQuery query = fullTextSession.createFullTextQuery( ftQuery, BusLine.class ); int count = query.list().size(); tx.commit(); fullTextSession.close(); return count; }
@Test public void testEmbeddedIndexingOfElementCollection() throws Exception { Session s = openSession(); Transaction tx = s.beginTransaction(); FullTextSession session = Search.getFullTextSession( s ); QueryDescriptor query; List<?> result; query = ElasticsearchQueries.fromJson( "{" + "'query' : { " + "'match' : { " + "'strengths' : 'willingness'" + " }" + " }" + " }" ); result = session.createFullTextQuery( query, GolfPlayer.class ).list(); assertEquals( "unable to find property in embedded element collection", 1, result.size() ); tx.commit(); s.close(); }