@Test public void testClassBridgeWithSingleField() throws Exception { helper.index( new Bar( 1 ) ); TermQuery termQuery = new TermQuery( new Term( "classField", "dog" ) ); helper.assertThat( termQuery ) .as( "custom analyzer should have inserted search token" ) .matchesExactlyIds( 1 ); }
@Test public void testClassBridgeWithSingleField() throws Exception { helper.index( new FooBar( 1 ) ); TermQuery termQuery = new TermQuery( new Term( "classField", "dog" ) ); helper.assertThat( termQuery ) .as( "custom analyzer should have inserted search token" ) .matchesExactlyIds( 1 ); }
@Test public void testCustomAnalyzersAppliedForFieldsAddedInClassBridge() throws Exception { helper.index( new Foo( 1 ) ); String[] searchTokens = new String[] { "dog", "cat", "mouse" }; for ( int i = 0; i < searchTokens.length; i++ ) { TermQuery termQuery = new TermQuery( new Term( FooBridge.fieldNames[i], searchTokens[i] ) ); helper.assertThat( termQuery ) .as( "custom analyzer should have inserted search token" ) .matchesExactlyIds( 1 ); } }
assertRangeQuery( "overriddenFieldName", 1, 3 ).as( "Query id " ).hasResultSize( 3 ); assertRangeQuery( "latitude", -10d, 10d ).as( "Query by double range" ).hasResultSize( 3 ); assertRangeQuery( "importance", (short) 11, (short) 13 ).as( "Query by short range" ).hasResultSize( 3 ); assertRangeQuery( "fallbackImportance", Short.valueOf( "11" ), Short.valueOf( "13" ) ).as( "Query by Short range" ).hasResultSize( 3 ); assertRangeQuery( "popularity", (byte) 21, (byte) 23 ).as( "Query by byte range" ).hasResultSize( 3 ); assertRangeQuery( "fallbackPopularity", Byte.valueOf( "21" ), Byte.valueOf( "23" ) ).as( "Query by Byte range" ).hasResultSize( 3 ); assertRangeQuery( "ranking", 1, 2 ).as( "Query by integer range" ).hasResultSize( 4 ); assertRangeQuery( "myCounter", 1L, 3L ).as( "Query by long range" ).hasResultSize( 3 ); assertRangeQuery( "strMultiple", 0.7d, 0.9d ).as( "Query by multi-fields" ).hasResultSize( 2 ); assertRangeQuery( "visibleStars", -100L, 500L ).as( "Query on custom bridge by range" ).hasResultSize( 4 ); assertRangeQuery( "overriddenFieldName", 1, 3, true, false ).as( "Query by id excluding upper" ).hasResultSize( 2 ); assertRangeQuery( "overriddenFieldName", 1, 3, false, false ).as( "Query by id excluding upper and lower" ).hasResultSize( 1 ); assertRangeQuery( "country.idh", 0.9, 1d ).as( "Range Query for indexed embedded" ).hasResultSize( 2 ); assertRangeQuery( "pinPoints.stars", 4, 5 ).as( "Range Query across entities" ).hasResultSize( 1 ); assertExactQuery( "overriddenFieldName", 1 ).as( "Query id exact" ).matchesExactlyIds( 1 ); assertExactQuery( "latitude", -10d ).as( "Query double exact" ).matchesExactlyIds( 2 ); assertExactQuery( "importance", 12 ).as( "Query short exact" ).matchesExactlyIds( 3 ); assertExactQuery( "popularity", 22 ).as( "Query byte exact" ).matchesExactlyIds( 3 ); assertExactQuery( "longitude", -20d ).as( "Query integer exact" ).matchesExactlyIds( 3 ); assertExactQuery( "myCounter", 4L ).as( "Query long exact" ).matchesExactlyIds( 4 ); assertExactQuery( "strMultiple", 0.1d ).as( "Query multifield exact" ).matchesExactlyIds( 5 ); assertExactQuery( "visibleStars", 1000L ).as( "Query on custom bridge exact" ).matchesExactlyIds( 3 ); assertRangeQuery( "overriddenFieldName", 1, 6 ).as( "Check for deletion on Query" ).hasResultSize( 0 );
@TestForIssue(jiraKey = "HSEARCH-2545") @Test public void testIndexAndSearchNumericField() { integrator = integratorResource.create( new SearchConfigurationForTest().addClasses( A.class, B.class, C.class ) ); /* * We mainly want to test that the search factory will initialize without error, * but also checking that the field is actually numeric won't hurt. */ A a = new A(); a.id = 0L; B b = new B(); b.id = 1L; b.a = a; C c = new C(); c.id = 2L; c.b = b; helper.add( a, c ); // Range Queries including lower and upper bounds assertRangeQuery( C.class, "b.a.id", a.id, a.id ).as( "Query id " ).hasResultSize( 1 ); }
@Test public void test() { Team team = new Team( 1 ); team.setName( stringToIndex ); helper.index( team ); if ( unexpectedTokens != null ) { for ( String token : unexpectedTokens ) { String fieldName = "name_" + analyzerName; Query query = new TermQuery( new Term( fieldName, token ) ); helper.assertThat( query ) .as( "Results of searching '" + token + "' on field '" + fieldName + "'" ) .matchesNone(); } } for ( String token : expectedTokens ) { String fieldName = "name_" + analyzerName; Query query = new TermQuery( new Term( fieldName, token ) ); helper.assertThat( query ) .as( "Results of searching '" + token + "' on field '" + fieldName + "'" ) .matchesExactlyIds( team.getId() ); } }
@Test @TestForIssue(jiraKey = "HSEARCH-1074") public void testPhraseQueryWithNoTermsAfterAnalyzerApplication() throws Exception { final QueryBuilder monthQb = helper.queryBuilder( Month.class ); // we use mythology_stem here as the default analyzer for Elasticsearch does not include a stopwords filter Query query = monthQb. phrase() .onField( "mythology_stem" ) .sentence( "and" ) .createQuery(); helper.assertThat( query ).from( Month.class ) .as( "there should be no results, since all terms are stop words" ) .matchesNone(); }
@Test @TestForIssue(jiraKey = "HSEARCH-2479") public void testPhraseQueryTermCreation() throws Exception { String testCaseText = "Test the Test test of your test test to test test test of test and Test budgeting."; final QueryBuilder monthQb = helper.queryBuilder( Month.class ); Query query = monthQb .phrase() .onField( "mythology" ) .sentence( testCaseText ) .createQuery(); helper.assertThat( query ).from( Month.class ).as( "test term ordering" ).hasResultSize( 0 ); }
@Test @TestForIssue( jiraKey = "HSEARCH-703" ) public void testPolymorphicQueryForUnindexedSuperTypeReturnsIndexedSubType() { final QueryBuilder builder = helper.queryBuilder( Object.class ); Query query = builder.all().createQuery(); helper.assertThat( query ).from( Object.class ) .as( "expected all instances of all indexed types" ) .hasResultSize( 8 ); }