Search in sources :

Example 21 with Field

use of org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder.Field in project elasticsearch by elastic.

the class HighlighterSearchIT method testHighlightUsesHighlightQuery.

public void testHighlightUsesHighlightQuery() throws IOException {
    assertAcked(prepareCreate("test").addMapping("type1", "text", "type=text," + randomStoreField() + "term_vector=with_positions_offsets,index_options=offsets"));
    ensureGreen();
    index("test", "type1", "1", "text", "Testing the highlight query feature");
    refresh();
    for (String type : ALL_TYPES) {
        HighlightBuilder.Field field = new HighlightBuilder.Field("text");
        HighlightBuilder highlightBuilder = new HighlightBuilder().field(field).highlighterType(type);
        SearchRequestBuilder search = client().prepareSearch("test").setQuery(QueryBuilders.matchQuery("text", "testing")).highlighter(highlightBuilder);
        Matcher<String> searchQueryMatcher = equalTo("<em>Testing</em> the highlight query feature");
        SearchResponse response = search.get();
        assertHighlight(response, 0, "text", 0, searchQueryMatcher);
        field = new HighlightBuilder.Field("text");
        Matcher<String> hlQueryMatcher = equalTo("Testing the highlight <em>query</em> feature");
        field.highlightQuery(matchQuery("text", "query"));
        highlightBuilder = new HighlightBuilder().field(field);
        search = client().prepareSearch("test").setQuery(QueryBuilders.matchQuery("text", "testing")).highlighter(highlightBuilder);
        response = search.get();
        assertHighlight(response, 0, "text", 0, hlQueryMatcher);
        // Make sure the highlightQuery is taken into account when it is set on the highlight context instead of the field
        highlightBuilder.highlightQuery(matchQuery("text", "query"));
        field.highlighterType(type).highlightQuery(null);
        response = search.get();
        assertHighlight(response, 0, "text", 0, hlQueryMatcher);
    }
}
Also used : Field(org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder.Field) SearchRequestBuilder(org.elasticsearch.action.search.SearchRequestBuilder) Matchers.containsString(org.hamcrest.Matchers.containsString) Field(org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder.Field) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Example 22 with Field

use of org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder.Field in project elasticsearch by elastic.

the class HighlighterSearchIT method testPostingsHighlighterMultipleFields.

public void testPostingsHighlighterMultipleFields() throws Exception {
    assertAcked(prepareCreate("test").addMapping("type1", type1PostingsffsetsMapping()).get());
    ensureGreen();
    index("test", "type1", "1", "field1", "The <b>quick<b> brown fox. Second sentence.", "field2", "The <b>slow<b> brown fox. Second sentence.");
    refresh();
    for (String type : UNIFIED_AND_NULL) {
        SearchResponse response = client().prepareSearch("test").setQuery(QueryBuilders.matchQuery("field1", "fox")).highlighter(new HighlightBuilder().field(new Field("field1").preTags("<1>").postTags("</1>").requireFieldMatch(true).highlighterType(type))).get();
        assertHighlight(response, 0, "field1", 0, 1, equalTo("The <b>quick<b> brown <1>fox</1>."));
    }
}
Also used : Field(org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder.Field) Matchers.containsString(org.hamcrest.Matchers.containsString) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Example 23 with Field

use of org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder.Field in project elasticsearch by elastic.

the class HighlighterSearchIT method testHighlightingWithStoredKeyword.

public void testHighlightingWithStoredKeyword() throws IOException {
    XContentBuilder mappings = jsonBuilder();
    mappings.startObject();
    mappings.startObject("type").startObject("properties").startObject("text").field("type", "keyword").field("store", true).endObject().endObject().endObject();
    mappings.endObject();
    assertAcked(prepareCreate("test").addMapping("type", mappings));
    client().prepareIndex("test", "type", "1").setSource(jsonBuilder().startObject().field("text", "foo").endObject()).get();
    refresh();
    for (String type : UNIFIED_AND_NULL) {
        SearchResponse search = client().prepareSearch().setQuery(matchQuery("text", "foo")).highlighter(new HighlightBuilder().field(new Field("text")).highlighterType(type)).get();
        assertHighlight(search, 0, "text", 0, equalTo("<em>foo</em>"));
    }
}
Also used : Field(org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder.Field) Matchers.containsString(org.hamcrest.Matchers.containsString) XContentBuilder(org.elasticsearch.common.xcontent.XContentBuilder) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Example 24 with Field

use of org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder.Field in project elasticsearch by elastic.

the class HighlighterSearchIT method testFunctionScoreQueryHighlight.

public void testFunctionScoreQueryHighlight() throws Exception {
    client().prepareIndex("test", "type", "1").setSource(jsonBuilder().startObject().field("text", "brown").endObject()).setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).get();
    for (String type : UNIFIED_AND_NULL) {
        SearchResponse searchResponse = client().prepareSearch().setQuery(new FunctionScoreQueryBuilder(QueryBuilders.prefixQuery("text", "bro"))).highlighter(new HighlightBuilder().field(new Field("text")).highlighterType(type)).get();
        assertHitCount(searchResponse, 1);
        HighlightField field = searchResponse.getHits().getAt(0).getHighlightFields().get("text");
        assertThat(field.getFragments().length, equalTo(1));
        assertThat(field.getFragments()[0].string(), equalTo("<em>brown</em>"));
    }
}
Also used : Field(org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder.Field) FunctionScoreQueryBuilder(org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder) Matchers.containsString(org.hamcrest.Matchers.containsString) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Example 25 with Field

use of org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder.Field in project elasticsearch by elastic.

the class HighlighterSearchIT method testHighlightingWhenFieldsAreNotStoredThereIsNoSource.

public void testHighlightingWhenFieldsAreNotStoredThereIsNoSource() throws IOException {
    XContentBuilder mappings = jsonBuilder();
    mappings.startObject();
    mappings.startObject("type").startObject("_source").field("enabled", false).endObject().startObject("properties").startObject("unstored_field").field("index_options", "offsets").field("term_vector", "with_positions_offsets").field("type", "text").field("store", false).endObject().startObject("text").field("index_options", "offsets").field("term_vector", "with_positions_offsets").field("type", "text").field("store", true).endObject().endObject().endObject();
    mappings.endObject();
    assertAcked(prepareCreate("test").addMapping("type", mappings));
    client().prepareIndex("test", "type", "1").setSource(jsonBuilder().startObject().field("unstored_text", "text").field("text", "text").endObject()).get();
    refresh();
    for (String type : ALL_TYPES) {
        SearchResponse search = client().prepareSearch().setQuery(constantScoreQuery(matchQuery("text", "text"))).highlighter(new HighlightBuilder().field(new Field("*").highlighterType(type))).get();
        assertHighlight(search, 0, "text", 0, equalTo("<em>text</em>"));
        search = client().prepareSearch().setQuery(constantScoreQuery(matchQuery("text", "text"))).highlighter(new HighlightBuilder().field(new Field("unstored_text"))).get();
        assertNoFailures(search);
        assertThat(search.getHits().getAt(0).getHighlightFields().size(), equalTo(0));
    }
}
Also used : Field(org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder.Field) Matchers.containsString(org.hamcrest.Matchers.containsString) XContentBuilder(org.elasticsearch.common.xcontent.XContentBuilder) SearchResponse(org.elasticsearch.action.search.SearchResponse) ElasticsearchAssertions.assertSearchResponse(org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)

Aggregations

Field (org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder.Field)28 SearchResponse (org.elasticsearch.action.search.SearchResponse)24 ElasticsearchAssertions.assertSearchResponse (org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse)22 Matchers.containsString (org.hamcrest.Matchers.containsString)17 XContentBuilder (org.elasticsearch.common.xcontent.XContentBuilder)5 SearchSourceBuilder (org.elasticsearch.search.builder.SearchSourceBuilder)5 IdsQueryBuilder (org.elasticsearch.index.query.IdsQueryBuilder)3 MatchQueryBuilder (org.elasticsearch.index.query.MatchQueryBuilder)3 MultiMatchQueryBuilder (org.elasticsearch.index.query.MultiMatchQueryBuilder)3 FunctionScoreQueryBuilder (org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder)3 SearchRequestBuilder (org.elasticsearch.action.search.SearchRequestBuilder)2 GeoPoint (org.elasticsearch.common.geo.GeoPoint)2 MatchAllQueryBuilder (org.elasticsearch.index.query.MatchAllQueryBuilder)2 QueryBuilder (org.elasticsearch.index.query.QueryBuilder)2 SearchHit (org.elasticsearch.search.SearchHit)2 HighlightBuilder (org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder)2 HighlightField (org.elasticsearch.search.fetch.subphase.highlight.HighlightField)2 TreeSet (java.util.TreeSet)1 Function (java.util.function.Function)1 Query (org.apache.lucene.search.Query)1