@Test @Category( ElasticsearchSupportInProgress .class) // HSEARCH-2428 Provide an alternative to // org.hibernate.search.analyzer.Discriminator for Elasticsearch? public void testAnalyzerDiscriminator() throws Exception { FullTextSession s = Search.getFullTextSession(openSession()); Transaction tx = s.beginTransaction(); BlogEntry deEntry = new BlogEntry(); deEntry.setTitle("aufeinanderschl\u00FCgen"); deEntry.setDescription("aufeinanderschl\u00FCgen"); deEntry.setLanguage("de"); s.persist(deEntry); BlogEntry enEntry = new BlogEntry(); enEntry.setTitle("acknowledgment"); enEntry.setDescription("acknowledgment"); enEntry.setLanguage("en"); s.persist(enEntry); tx.commit(); s.clear(); tx = s.beginTransaction(); // at query time we use a standard analyzer. We explicitly search for tokens which can only be // found if the // right language specific stemmer was used at index time assertEquals(1, nbrOfMatchingResults("description", "aufeinanderschlug", s)); assertEquals(1, nbrOfMatchingResults("description", "acknowledg", s)); assertEquals(0, nbrOfMatchingResults("title", "aufeinanderschlug", s)); assertEquals(1, nbrOfMatchingResults("title", "acknowledgment", s)); for (Object result : s.createQuery("from " + BlogEntry.class.getName()).list()) { s.delete(result); } tx.commit(); s.close(); }
@Test public void testDateBridgeMapping() throws Exception { FullTextSession s = Search.getFullTextSession(openSession()); Transaction tx = s.beginTransaction(); Address address = new Address(); address.setStreet1("Peachtree Rd NE"); address.setStreet2("Peachtnot Rd NE"); Calendar c = GregorianCalendar.getInstance( TimeZone.getTimeZone("GMT"), Locale.ROOT); // for the sake of tests c.set(2009, Calendar.NOVEMBER, 15); Date date = new Date(c.getTimeInMillis()); address.setDateCreated(date); s.persist(address); address = new Address(); address.setStreet1("Peachtnot Rd NE"); address.setStreet2("Peachtree Rd NE"); address.setDateCreated(date); s.persist(address); BlogEntry enEntry = new BlogEntry(); enEntry.setTitle("acknowledgment"); enEntry.setDescription("acknowledgment"); enEntry.setLanguage("en"); enEntry.setDateCreated(date); s.persist(enEntry); tx.commit(); s.clear(); tx = s.beginTransaction(); long searchTimeStamp = DateTools.round(date.getTime(), DateTools.Resolution.DAY); BooleanQuery.Builder booleanQueryBuilder = new BooleanQuery.Builder(); booleanQueryBuilder.add( NumericRangeQuery.newLongRange( "date-created", searchTimeStamp, searchTimeStamp, true, true), BooleanClause.Occur.SHOULD); booleanQueryBuilder.add( NumericRangeQuery.newLongRange( "blog-entry-created", searchTimeStamp, searchTimeStamp, true, true), BooleanClause.Occur.SHOULD); FullTextQuery query = s.createFullTextQuery(booleanQueryBuilder.build()) .setProjection(FullTextQuery.THIS, FullTextQuery.SCORE); assertEquals("expecting 3 results", 3, query.getResultSize()); @SuppressWarnings("unchecked") List<Object[]> results = query.list(); for (Object[] result : results) { s.delete(result[0]); } tx.commit(); s.close(); }