summaryrefslogtreecommitdiff
path: root/core/src/test/java/org/elasticsearch/search
diff options
context:
space:
mode:
authorJim Ferenczi <jim.ferenczi@elastic.co>2017-06-09 14:09:57 +0200
committerGitHub <noreply@github.com>2017-06-09 14:09:57 +0200
commit8250aa42678e086f2c0f3aeb35860051858826a7 (patch)
treec17394adb5083627b57d08b75daa12c325b62ef2 /core/src/test/java/org/elasticsearch/search
parenteca4f24b1686cc134d9a27b26ea5d85473e81813 (diff)
Remove the postings highlighter and make unified the default highlighter choice (#25028)
This change removes the `postings` highlighter. This highlighter has been removed from Lucene master (7.x) because it behaves exactly like the `unified` highlighter when index_options is set to `offsets`: https://issues.apache.org/jira/browse/LUCENE-7815 It also makes the `unified` highlighter the default choice for highlighting a field (if `type` is not provided). The strategy used internally by this highlighter remain the same as before, it checks `term_vectors` first, then `postings` and ultimately it re-analyzes the text. Ultimately it rewrites the docs so that the options that the `unified` highlighter cannot handle are clearly marked as such. There are few features that the `unified` highlighter is not able to handle which is why the other highlighters (`plain` and `fvh`) are still available. I'll open separate issues for these features and we'll deprecate the `fvh` and `plain` highlighters when full support for these features have been added to the `unified`.
Diffstat (limited to 'core/src/test/java/org/elasticsearch/search')
-rw-r--r--core/src/test/java/org/elasticsearch/search/SearchModuleTests.java4
-rw-r--r--core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsIT.java2
-rw-r--r--core/src/test/java/org/elasticsearch/search/fetch/subphase/highlight/HighlighterSearchIT.java1135
3 files changed, 474 insertions, 667 deletions
diff --git a/core/src/test/java/org/elasticsearch/search/SearchModuleTests.java b/core/src/test/java/org/elasticsearch/search/SearchModuleTests.java
index 85b1397404..4b053b1968 100644
--- a/core/src/test/java/org/elasticsearch/search/SearchModuleTests.java
+++ b/core/src/test/java/org/elasticsearch/search/SearchModuleTests.java
@@ -56,7 +56,7 @@ import org.elasticsearch.search.fetch.subphase.highlight.CustomHighlighter;
import org.elasticsearch.search.fetch.subphase.highlight.FastVectorHighlighter;
import org.elasticsearch.search.fetch.subphase.highlight.Highlighter;
import org.elasticsearch.search.fetch.subphase.highlight.PlainHighlighter;
-import org.elasticsearch.search.fetch.subphase.highlight.PostingsHighlighter;
+import org.elasticsearch.search.fetch.subphase.highlight.UnifiedHighlighter;
import org.elasticsearch.search.internal.SearchContext;
import org.elasticsearch.search.suggest.CustomSuggesterSearchIT.CustomSuggestionBuilder;
import org.elasticsearch.search.suggest.SuggestionBuilder;
@@ -204,7 +204,7 @@ public class SearchModuleTests extends ModuleTestCase {
Map<String, Highlighter> highlighters = module.getHighlighters();
assertEquals(FastVectorHighlighter.class, highlighters.get("fvh").getClass());
assertEquals(PlainHighlighter.class, highlighters.get("plain").getClass());
- assertEquals(PostingsHighlighter.class, highlighters.get("postings").getClass());
+ assertEquals(UnifiedHighlighter.class, highlighters.get("unified").getClass());
assertSame(highlighters.get("custom"), customHighlighter);
}
diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsIT.java b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsIT.java
index 563fac1ba7..a90960c2ec 100644
--- a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsIT.java
+++ b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsIT.java
@@ -852,7 +852,7 @@ public class TopHitsIT extends ESIntegTestCase {
}
public void testNestedFetchFeatures() {
- String hlType = randomFrom("plain", "fvh", "postings");
+ String hlType = randomFrom("plain", "fvh", "unified");
HighlightBuilder.Field hlField = new HighlightBuilder.Field("comments.message")
.highlightQuery(matchQuery("comments.message", "comment"))
.forceSource(randomBoolean()) // randomly from stored field or _source
diff --git a/core/src/test/java/org/elasticsearch/search/fetch/subphase/highlight/HighlighterSearchIT.java b/core/src/test/java/org/elasticsearch/search/fetch/subphase/highlight/HighlighterSearchIT.java
index f7f9bbaeb4..9cbd9fc5d7 100644
--- a/core/src/test/java/org/elasticsearch/search/fetch/subphase/highlight/HighlighterSearchIT.java
+++ b/core/src/test/java/org/elasticsearch/search/fetch/subphase/highlight/HighlighterSearchIT.java
@@ -102,8 +102,7 @@ import static org.hamcrest.Matchers.startsWith;
public class HighlighterSearchIT extends ESIntegTestCase {
// TODO as we move analyzers out of the core we need to move some of these into HighlighterWithAnalyzersTests
- private static final String[] ALL_TYPES = new String[] {"plain", "postings", "fvh", "unified"};
- private static final String[] UNIFIED_AND_NULL = new String[] {null, "unified"};
+ private static final String[] ALL_TYPES = new String[] {"plain", "fvh", "unified"};
@Override
protected Collection<Class<? extends Plugin>> nodePlugins() {
@@ -127,11 +126,9 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.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>"));
- }
+ SearchResponse search = client().prepareSearch().setQuery(matchQuery("text", "foo"))
+ .highlighter(new HighlightBuilder().field(new Field("text"))).get();
+ assertHighlight(search, 0, "text", 0, equalTo("<em>foo</em>"));
}
public void testHighlightingWithWildcardName() throws IOException {
@@ -279,19 +276,19 @@ public class HighlighterSearchIT extends ESIntegTestCase {
refresh();
SearchResponse search = client().prepareSearch()
.setQuery(matchQuery("long_term", "thisisaverylongwordandmakessurethisfails foo highlighed"))
- .highlighter(new HighlightBuilder().field("long_term", 18, 1))
+ .highlighter(new HighlightBuilder().field("long_term", 18, 1).highlighterType("fvh"))
.get();
assertHighlight(search, 0, "long_term", 0, 1, equalTo("<em>thisisaverylongwordandmakessurethisfails</em>"));
search = client().prepareSearch()
.setQuery(matchPhraseQuery("no_long_term", "test foo highlighed").slop(3))
- .highlighter(new HighlightBuilder().field("no_long_term", 18, 1).postTags("</b>").preTags("<b>"))
+ .highlighter(new HighlightBuilder().field("no_long_term", 18, 1).highlighterType("fvh").postTags("</b>").preTags("<b>"))
.get();
assertNotHighlighted(search, 0, "no_long_term");
search = client().prepareSearch()
.setQuery(matchPhraseQuery("no_long_term", "test foo highlighed").slop(3))
- .highlighter(new HighlightBuilder().field("no_long_term", 30, 1).postTags("</b>").preTags("<b>"))
+ .highlighter(new HighlightBuilder().field("no_long_term", 30, 1).highlighterType("fvh").postTags("</b>").preTags("<b>"))
.get();
assertHighlight(search, 0, "no_long_term", 0, 1, equalTo("a <b>test</b> where <b>foo</b> is <b>highlighed</b> and"));
@@ -326,26 +323,25 @@ public class HighlighterSearchIT extends ESIntegTestCase {
}
indexRandom(true, indexRequestBuilders);
- for (String type : UNIFIED_AND_NULL) {
- SearchResponse search = client().prepareSearch()
- .setQuery(matchQuery("title", "bug"))
- .highlighter(new HighlightBuilder().field("title", -1, 0).highlighterType(type))
- .get();
+ SearchResponse search = client().prepareSearch()
+ .setQuery(matchQuery("title", "bug"))
+ .highlighter(new HighlightBuilder().field("title", -1, 0))
+ .get();
- for (int i = 0; i < indexRequestBuilders.length; i++) {
- assertHighlight(search, i, "title", 0, equalTo("This is a test on the highlighting <em>bug</em> present in elasticsearch"));
- }
+ for (int i = 0; i < indexRequestBuilders.length; i++) {
+ assertHighlight(search, i, "title", 0, equalTo("This is a test on the highlighting <em>bug</em> present in elasticsearch"));
+ }
- search = client().prepareSearch()
- .setQuery(matchQuery("attachments.body", "attachment"))
- .highlighter(new HighlightBuilder().field("attachments.body", -1, 0).highlighterType(type))
- .get();
+ search = client().prepareSearch()
+ .setQuery(matchQuery("attachments.body", "attachment"))
+ .highlighter(new HighlightBuilder().field("attachments.body", -1, 0))
+ .get();
- for (int i = 0; i < indexRequestBuilders.length; i++) {
- assertHighlight(search, i, "attachments.body", 0, equalTo("<em>attachment</em> 1"));
- assertHighlight(search, i, "attachments.body", 1, equalTo("<em>attachment</em> 2"));
- }
+ for (int i = 0; i < indexRequestBuilders.length; i++) {
+ assertHighlight(search, i, "attachments.body", 0, equalTo("<em>attachment</em> 1"));
+ assertHighlight(search, i, "attachments.body", 1, equalTo("<em>attachment</em> 2"));
}
+
}
public void testSourceLookupHighlightingUsingFastVectorHighlighter() throws Exception {
@@ -380,25 +376,23 @@ public class HighlighterSearchIT extends ESIntegTestCase {
}
indexRandom(true, indexRequestBuilders);
- for (String type : UNIFIED_AND_NULL) {
- SearchResponse search = client().prepareSearch()
- .setQuery(matchQuery("title", "bug"))
- .highlighter(new HighlightBuilder().field("title", -1, 0).highlighterType(type))
- .get();
+ SearchResponse search = client().prepareSearch()
+ .setQuery(matchQuery("title", "bug"))
+ .highlighter(new HighlightBuilder().field("title", -1, 0))
+ .get();
- for (int i = 0; i < indexRequestBuilders.length; i++) {
- assertHighlight(search, i, "title", 0, equalTo("This is a test on the highlighting <em>bug</em> present in elasticsearch"));
- }
+ for (int i = 0; i < indexRequestBuilders.length; i++) {
+ assertHighlight(search, i, "title", 0, equalTo("This is a test on the highlighting <em>bug</em> present in elasticsearch"));
+ }
- search = client().prepareSearch()
- .setQuery(matchQuery("attachments.body", "attachment"))
- .highlighter(new HighlightBuilder().field("attachments.body", -1, 2).highlighterType(type))
- .execute().get();
+ search = client().prepareSearch()
+ .setQuery(matchQuery("attachments.body", "attachment"))
+ .highlighter(new HighlightBuilder().field("attachments.body", -1, 2))
+ .execute().get();
- for (int i = 0; i < 5; i++) {
- assertHighlight(search, i, "attachments.body", 0, equalTo("<em>attachment</em> 1"));
- assertHighlight(search, i, "attachments.body", 1, equalTo("<em>attachment</em> 2"));
- }
+ for (int i = 0; i < 5; i++) {
+ assertHighlight(search, i, "attachments.body", 0, equalTo("<em>attachment</em> 1"));
+ assertHighlight(search, i, "attachments.body", 1, equalTo("<em>attachment</em> 2"));
}
}
@@ -446,28 +440,26 @@ public class HighlighterSearchIT extends ESIntegTestCase {
assertHighlight(search, i, "title", 1, 2, equalTo("This is the second <em>bug</em> to perform highlighting on."));
}
- for (String type : UNIFIED_AND_NULL) {
- search = client().prepareSearch()
- .setQuery(matchQuery("title", "bug"))
- //sentences will be generated out of each value
- .highlighter(new HighlightBuilder().field("title").highlighterType(type)).get();
-
- for (int i = 0; i < indexRequestBuilders.length; i++) {
- assertHighlight(search, i, "title", 0,
- equalTo("This is a test on the highlighting <em>bug</em> present in elasticsearch."));
- assertHighlight(search, i, "title", 1, 2,
- equalTo("This is the second <em>bug</em> to perform highlighting on."));
- }
+ search = client().prepareSearch()
+ .setQuery(matchQuery("title", "bug"))
+ //sentences will be generated out of each value
+ .highlighter(new HighlightBuilder().field("title")).get();
- search = client().prepareSearch()
- .setQuery(matchQuery("attachments.body", "attachment"))
- .highlighter(new HighlightBuilder().field("attachments.body", -1, 2).highlighterType(type))
- .get();
+ for (int i = 0; i < indexRequestBuilders.length; i++) {
+ assertHighlight(search, i, "title", 0,
+ equalTo("This is a test on the highlighting <em>bug</em> present in elasticsearch."));
+ assertHighlight(search, i, "title", 1, 2,
+ equalTo("This is the second <em>bug</em> to perform highlighting on."));
+ }
- for (int i = 0; i < indexRequestBuilders.length; i++) {
- assertHighlight(search, i, "attachments.body", 0, equalTo("<em>attachment</em> for this test"));
- assertHighlight(search, i, "attachments.body", 1, 2, equalTo("<em>attachment</em> 2"));
- }
+ search = client().prepareSearch()
+ .setQuery(matchQuery("attachments.body", "attachment"))
+ .highlighter(new HighlightBuilder().field("attachments.body", -1, 2))
+ .get();
+
+ for (int i = 0; i < indexRequestBuilders.length; i++) {
+ assertHighlight(search, i, "attachments.body", 0, equalTo("<em>attachment</em> for this test"));
+ assertHighlight(search, i, "attachments.body", 1, 2, equalTo("<em>attachment</em> 2"));
}
}
@@ -521,9 +513,9 @@ public class HighlighterSearchIT extends ESIntegTestCase {
SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
- assertHighlight(searchResponse, 0, "field1", 0, 2, equalTo(" <global>test</global>"));
- assertHighlight(searchResponse, 0, "field1", 1, 2, equalTo(" <global>test</global>"));
- assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("this is another <field2>test</field2>"));
+ assertHighlight(searchResponse, 0, "field1", 0, 2, equalTo("<global>test</global>"));
+ assertHighlight(searchResponse, 0, "field1", 1, 2, equalTo("<global>test</global>"));
+ assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("yet another <field2>test</field2>"));
}
// Issue #5175
@@ -570,34 +562,31 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.setSource("field1", "The quick brown fox jumps over the lazy dog", "field2", "second field content").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- //works using stored field
- SearchResponse searchResponse = client().prepareSearch("test")
- .setQuery(termQuery("field1", "quick"))
- .highlighter(new HighlightBuilder().field(new Field("field1").preTags("<xxx>").postTags("</xxx>").highlighterType(type)))
- .get();
- assertHighlight(searchResponse, 0, "field1", 0, 1, equalTo("The <xxx>quick</xxx> brown fox jumps over the lazy dog"));
+ //works using stored field
+ SearchResponse searchResponse = client().prepareSearch("test")
+ .setQuery(termQuery("field1", "quick"))
+ .highlighter(new HighlightBuilder().field(new Field("field1").preTags("<xxx>").postTags("</xxx>")))
+ .get();
+ assertHighlight(searchResponse, 0, "field1", 0, 1, equalTo("The <xxx>quick</xxx> brown fox jumps over the lazy dog"));
- assertFailures(client().prepareSearch("test")
- .setQuery(termQuery("field1", "quick"))
- .highlighter(
- new HighlightBuilder().field(new Field("field1").preTags("<xxx>").postTags("</xxx>")
- .highlighterType(type).forceSource(true))),
- RestStatus.BAD_REQUEST,
- containsString("source is forced for fields [field1] but type [type1] has disabled _source"));
+ assertFailures(client().prepareSearch("test")
+ .setQuery(termQuery("field1", "quick"))
+ .highlighter(
+ new HighlightBuilder().field(new Field("field1").preTags("<xxx>").postTags("</xxx>").forceSource(true))),
+ RestStatus.BAD_REQUEST,
+ containsString("source is forced for fields [field1] but type [type1] has disabled _source"));
- SearchSourceBuilder searchSource = SearchSourceBuilder.searchSource().query(termQuery("field1", "quick"))
- .highlighter(highlight().forceSource(true).field("field1").highlighterType(type));
- assertFailures(client().prepareSearch("test").setSource(searchSource),
- RestStatus.BAD_REQUEST,
- containsString("source is forced for fields [field1] but type [type1] has disabled _source"));
+ SearchSourceBuilder searchSource = SearchSourceBuilder.searchSource().query(termQuery("field1", "quick"))
+ .highlighter(highlight().forceSource(true).field("field1"));
+ assertFailures(client().prepareSearch("test").setSource(searchSource),
+ RestStatus.BAD_REQUEST,
+ containsString("source is forced for fields [field1] but type [type1] has disabled _source"));
- searchSource = SearchSourceBuilder.searchSource().query(termQuery("field1", "quick"))
- .highlighter(highlight().forceSource(true).field("field*").highlighterType(type));
- assertFailures(client().prepareSearch("test").setSource(searchSource),
- RestStatus.BAD_REQUEST,
- matches("source is forced for fields \\[field\\d, field\\d\\] but type \\[type1\\] has disabled _source"));
- }
+ searchSource = SearchSourceBuilder.searchSource().query(termQuery("field1", "quick"))
+ .highlighter(highlight().forceSource(true).field("field*"));
+ assertFailures(client().prepareSearch("test").setSource(searchSource),
+ RestStatus.BAD_REQUEST,
+ matches("source is forced for fields \\[field\\d, field\\d\\] but type \\[type1\\] has disabled _source"));
}
public void testPlainHighlighter() throws Exception {
@@ -1015,16 +1004,14 @@ public class HighlighterSearchIT extends ESIntegTestCase {
}
indexRandom(true, indexRequestBuilders);
- for (String type : UNIFIED_AND_NULL) {
- SearchResponse search = client().prepareSearch()
- .setQuery(matchQuery("title", "bug"))
- .highlighter(new HighlightBuilder().field("title", -1, 0).highlighterType(type))
- .get();
+ SearchResponse search = client().prepareSearch()
+ .setQuery(matchQuery("title", "bug"))
+ .highlighter(new HighlightBuilder().field("title", -1, 0))
+ .get();
- for (int i = 0; i < 5; i++) {
- assertHighlight(search, i, "title", 0, 1, equalTo("This is a test on the highlighting <em>bug</em> " +
- "present in elasticsearch"));
- }
+ for (int i = 0; i < 5; i++) {
+ assertHighlight(search, i, "title", 0, 1, equalTo("This is a test on the highlighting <em>bug</em> " +
+ "present in elasticsearch"));
}
}
@@ -1041,7 +1028,7 @@ public class HighlighterSearchIT extends ESIntegTestCase {
SearchResponse search = client().prepareSearch()
.setQuery(matchQuery("title", "bug"))
- .highlighter(new HighlightBuilder().field("title", 30, 1, 10))
+ .highlighter(new HighlightBuilder().field("title", 30, 1, 10).highlighterType("fvh"))
.get();
for (int i = 0; i < 5; i++) {
@@ -1061,16 +1048,14 @@ public class HighlighterSearchIT extends ESIntegTestCase {
}
indexRandom(true, indexRequestBuilders);
- for (String type : UNIFIED_AND_NULL) {
- SearchResponse search = client().prepareSearch()
- .setQuery(matchQuery("title", "test"))
- .highlighter(new HighlightBuilder().encoder("html").field("title", 50, 1, 10).highlighterType(type))
- .get();
+ SearchResponse search = client().prepareSearch()
+ .setQuery(matchQuery("title", "test"))
+ .highlighter(new HighlightBuilder().encoder("html").field("title", 50, 1, 10))
+ .get();
- for (int i = 0; i < indexRequestBuilders.length; i++) {
- assertHighlight(search, i, "title", 0, 1,
- startsWith("This is a html escaping highlighting <em>test</em> for *&amp;?"));
- }
+ for (int i = 0; i < indexRequestBuilders.length; i++) {
+ assertHighlight(search, i, "title", 0, 1,
+ startsWith("This is a html escaping highlighting <em>test</em> for *&amp;?"));
}
}
@@ -1087,11 +1072,11 @@ public class HighlighterSearchIT extends ESIntegTestCase {
SearchResponse search = client().prepareSearch()
.setQuery(matchQuery("title", "test"))
- .highlighter(new HighlightBuilder().encoder("html").field("title", 30, 1, 10))
+ .highlighter(new HighlightBuilder().encoder("html").field("title", 30, 1, 10).highlighterType("plain"))
.get();
for (int i = 0; i < 5; i++) {
- assertHighlight(search, i, "title", 0, 1, equalTo("highlighting <em>test</em> for *&amp;? elasticsearch"));
+ assertHighlight(search, i, "title", 0, 1, equalTo(" highlighting <em>test</em> for *&amp;? elasticsearch"));
}
}
@@ -1116,23 +1101,21 @@ public class HighlighterSearchIT extends ESIntegTestCase {
client().prepareIndex("test", "type1", "1").setSource("title", "this is a test").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- // simple search on body with standard analyzer with a simple field query
- SearchResponse search = client().prepareSearch()
- .setQuery(matchQuery("title", "this is a test"))
- .highlighter(new HighlightBuilder().encoder("html").field("title", 50, 1).highlighterType(type))
- .get();
+ // simple search on body with standard analyzer with a simple field query
+ SearchResponse search = client().prepareSearch()
+ .setQuery(matchQuery("title", "this is a test"))
+ .highlighter(new HighlightBuilder().encoder("html").field("title", 50, 1))
+ .get();
- assertHighlight(search, 0, "title", 0, 1, equalTo("this is a <em>test</em>"));
+ assertHighlight(search, 0, "title", 0, 1, equalTo("this is a <em>test</em>"));
- // search on title.key and highlight on title
- search = client().prepareSearch()
- .setQuery(matchQuery("title.key", "this is a test"))
- .highlighter(new HighlightBuilder().encoder("html").field("title.key", 50, 1).highlighterType(type))
- .get();
+ // search on title.key and highlight on title
+ search = client().prepareSearch()
+ .setQuery(matchQuery("title.key", "this is a test"))
+ .highlighter(new HighlightBuilder().encoder("html").field("title.key", 50, 1))
+ .get();
- assertHighlight(search, 0, "title.key", 0, 1, equalTo("<em>this</em> <em>is</em> <em>a</em> <em>test</em>"));
- }
+ assertHighlight(search, 0, "title.key", 0, 1, equalTo("<em>this</em> <em>is</em> <em>a</em> <em>test</em>"));
}
public void testMultiMapperVectorFromSource() throws Exception {
@@ -1157,23 +1140,21 @@ public class HighlighterSearchIT extends ESIntegTestCase {
client().prepareIndex("test", "type1", "1").setSource("title", "this is a test").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- // simple search on body with standard analyzer with a simple field query
- SearchResponse search = client().prepareSearch()
- .setQuery(matchQuery("title", "this is a test"))
- .highlighter(new HighlightBuilder().encoder("html").field("title", 50, 1).highlighterType(type))
- .get();
+ // simple search on body with standard analyzer with a simple field query
+ SearchResponse search = client().prepareSearch()
+ .setQuery(matchQuery("title", "this is a test"))
+ .highlighter(new HighlightBuilder().encoder("html").field("title", 50, 1))
+ .get();
- assertHighlight(search, 0, "title", 0, 1, equalTo("this is a <em>test</em>"));
+ assertHighlight(search, 0, "title", 0, 1, equalTo("this is a <em>test</em>"));
- // search on title.key and highlight on title.key
- search = client().prepareSearch()
- .setQuery(matchQuery("title.key", "this is a test"))
- .highlighter(new HighlightBuilder().encoder("html").field("title.key", 50, 1).highlighterType(type))
- .get();
+ // search on title.key and highlight on title.key
+ search = client().prepareSearch()
+ .setQuery(matchQuery("title.key", "this is a test"))
+ .highlighter(new HighlightBuilder().encoder("html").field("title.key", 50, 1))
+ .get();
- assertHighlight(search, 0, "title.key", 0, 1, equalTo("<em>this</em> <em>is</em> <em>a</em> <em>test</em>"));
- }
+ assertHighlight(search, 0, "title.key", 0, 1, equalTo("<em>this</em> <em>is</em> <em>a</em> <em>test</em>"));
}
public void testMultiMapperNoVectorWithStore() throws Exception {
@@ -1200,23 +1181,21 @@ public class HighlighterSearchIT extends ESIntegTestCase {
refresh();
- for (String type : UNIFIED_AND_NULL) {
- // simple search on body with standard analyzer with a simple field query
- SearchResponse search = client().prepareSearch()
- .setQuery(matchQuery("title", "this is a test"))
- .highlighter(new HighlightBuilder().encoder("html").field("title", 50, 1).highlighterType(type))
- .get();
+ // simple search on body with standard analyzer with a simple field query
+ SearchResponse search = client().prepareSearch()
+ .setQuery(matchQuery("title", "this is a test"))
+ .highlighter(new HighlightBuilder().encoder("html").field("title", 50, 1))
+ .get();
- assertHighlight(search, 0, "title", 0, 1, equalTo("this is a <em>test</em>"));
+ assertHighlight(search, 0, "title", 0, 1, equalTo("this is a <em>test</em>"));
- // search on title.key and highlight on title
- search = client().prepareSearch()
- .setQuery(matchQuery("title.key", "this is a test"))
- .highlighter(new HighlightBuilder().encoder("html").field("title.key", 50, 1).highlighterType(type))
- .get();
+ // search on title.key and highlight on title
+ search = client().prepareSearch()
+ .setQuery(matchQuery("title.key", "this is a test"))
+ .highlighter(new HighlightBuilder().encoder("html").field("title.key", 50, 1))
+ .get();
- assertHighlight(search, 0, "title.key", 0, 1, equalTo("<em>this</em> <em>is</em> <em>a</em> <em>test</em>"));
- }
+ assertHighlight(search, 0, "title.key", 0, 1, equalTo("<em>this</em> <em>is</em> <em>a</em> <em>test</em>"));
}
public void testMultiMapperNoVectorFromSource() throws Exception {
@@ -1241,23 +1220,21 @@ public class HighlighterSearchIT extends ESIntegTestCase {
client().prepareIndex("test", "type1", "1").setSource("title", "this is a test").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- // simple search on body with standard analyzer with a simple field query
- SearchResponse search = client().prepareSearch()
- .setQuery(matchQuery("title", "this is a test"))
- .highlighter(new HighlightBuilder().encoder("html").field("title", 50, 1).highlighterType(type))
- .get();
+ // simple search on body with standard analyzer with a simple field query
+ SearchResponse search = client().prepareSearch()
+ .setQuery(matchQuery("title", "this is a test"))
+ .highlighter(new HighlightBuilder().encoder("html").field("title", 50, 1))
+ .get();
- assertHighlight(search, 0, "title", 0, 1, equalTo("this is a <em>test</em>"));
+ assertHighlight(search, 0, "title", 0, 1, equalTo("this is a <em>test</em>"));
- // search on title.key and highlight on title.key
- search = client().prepareSearch()
- .setQuery(matchQuery("title.key", "this is a test"))
- .highlighter(new HighlightBuilder().encoder("html").field("title.key", 50, 1).highlighterType(type))
- .get();
+ // search on title.key and highlight on title.key
+ search = client().prepareSearch()
+ .setQuery(matchQuery("title.key", "this is a test"))
+ .highlighter(new HighlightBuilder().encoder("html").field("title.key", 50, 1))
+ .get();
- assertHighlight(search, 0, "title.key", 0, 1, equalTo("<em>this</em> <em>is</em> <em>a</em> <em>test</em>"));
- }
+ assertHighlight(search, 0, "title.key", 0, 1, equalTo("<em>this</em> <em>is</em> <em>a</em> <em>test</em>"));
}
public void testFastVectorHighlighterShouldFailIfNoTermVectors() throws Exception {
@@ -1305,7 +1282,7 @@ public class HighlighterSearchIT extends ESIntegTestCase {
SearchResponse search = client().prepareSearch()
.setQuery(matchPhraseQuery("title", "test for the workaround"))
- .highlighter(new HighlightBuilder().field("title", 50, 1, 10))
+ .highlighter(new HighlightBuilder().field("title", 50, 1, 10).highlighterType("fvh"))
.get();
for (int i = 0; i < indexRequestBuilders.length; i++) {
@@ -1350,7 +1327,7 @@ public class HighlighterSearchIT extends ESIntegTestCase {
SearchResponse response = client().prepareSearch("test")
.setQuery(QueryBuilders.matchQuery("tags", "tag"))
- .highlighter(new HighlightBuilder().field("tags", -1, 0)).get();
+ .highlighter(new HighlightBuilder().field("tags", -1, 0).highlighterType("fvh")).get();
assertHighlight(response, 0, "tags", 0, equalTo("this is a really long <em>tag</em> i would like to highlight"));
assertHighlight(response, 0, "tags", 1, 2,
@@ -1364,16 +1341,14 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.setSource("field1", "this is a test", "field2", "The quick brown fox jumps over the lazy dog").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- logger.info("--> highlighting and searching on field1");
- SearchSourceBuilder source = searchSource()
- .query(boostingQuery(termQuery("field2", "brown"), termQuery("field2", "foobar")).negativeBoost(0.5f))
- .highlighter(highlight().field("field2").order("score").preTags("<x>").postTags("</x>").highlighterType(type));
+ logger.info("--> highlighting and searching on field1");
+ SearchSourceBuilder source = searchSource()
+ .query(boostingQuery(termQuery("field2", "brown"), termQuery("field2", "foobar")).negativeBoost(0.5f))
+ .highlighter(highlight().field("field2").order("score").preTags("<x>").postTags("</x>"));
- SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
+ SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
- assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The quick <x>brown</x> fox jumps over the lazy dog"));
- }
+ assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The quick <x>brown</x> fox jumps over the lazy dog"));
}
public void testBoostingQueryTermVector() throws IOException {
@@ -1404,14 +1379,12 @@ public class HighlighterSearchIT extends ESIntegTestCase {
refresh();
logger.info("--> highlighting and searching on field1");
- for (String type : UNIFIED_AND_NULL) {
- SearchSourceBuilder source = searchSource()
- .query(commonTermsQuery("field2", "quick brown").cutoffFrequency(100))
- .highlighter(highlight().field("field2").order("score").preTags("<x>").postTags("</x>").highlighterType(type));
+ SearchSourceBuilder source = searchSource()
+ .query(commonTermsQuery("field2", "quick brown").cutoffFrequency(100))
+ .highlighter(highlight().field("field2").order("score").preTags("<x>").postTags("</x>"));
- SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
- assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The <x>quick</x> <x>brown</x> fox jumps over the lazy dog"));
- }
+ SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
+ assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The <x>quick</x> <x>brown</x> fox jumps over the lazy dog"));
}
public void testCommonTermsTermVector() throws IOException {
@@ -1453,98 +1426,86 @@ public class HighlighterSearchIT extends ESIntegTestCase {
refresh();
logger.info("--> highlighting and searching on field0");
- for (String type : UNIFIED_AND_NULL) {
- SearchSourceBuilder source = searchSource()
+ SearchSourceBuilder source = searchSource()
.query(matchPhrasePrefixQuery("field0", "bro"))
- .highlighter(highlight().field("field0").order("score").preTags("<x>").postTags("</x>").highlighterType(type));
-
- SearchResponse searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+ .highlighter(highlight().field("field0").order("score").preTags("<x>").postTags("</x>"));
+ SearchResponse searchResponse = client().search(searchRequest("test").source(source)).actionGet();
- assertHighlight(searchResponse, 0, "field0", 0, 1, equalTo("The quick <x>brown</x> fox jumps over the lazy dog"));
+ assertHighlight(searchResponse, 0, "field0", 0, 1, equalTo("The quick <x>brown</x> fox jumps over the lazy dog"));
- source = searchSource()
- .query(matchPhrasePrefixQuery("field0", "quick bro"))
- .highlighter(highlight().field("field0").order("score").preTags("<x>").postTags("</x>").highlighterType(type));
-
- searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+ source = searchSource()
+ .query(matchPhrasePrefixQuery("field0", "quick bro"))
+ .highlighter(highlight().field("field0").order("score").preTags("<x>").postTags("</x>"));
- assertHighlight(searchResponse, 0, "field0", 0, 1, equalTo("The <x>quick</x> <x>brown</x> fox jumps over the lazy dog"));
+ searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+ assertHighlight(searchResponse, 0, "field0", 0, 1, equalTo("The <x>quick</x> <x>brown</x> fox jumps over the lazy dog"));
- logger.info("--> highlighting and searching on field1");
- source = searchSource()
- .query(boolQuery()
- .should(matchPhrasePrefixQuery("field1", "test"))
- .should(matchPhrasePrefixQuery("field1", "bro"))
- )
- .highlighter(highlight().field("field1").order("score").preTags("<x>").postTags("</x>").highlighterType(type));
+ logger.info("--> highlighting and searching on field1");
+ source = searchSource()
+ .query(boolQuery()
+ .should(matchPhrasePrefixQuery("field1", "test"))
+ .should(matchPhrasePrefixQuery("field1", "bro"))
+ )
+ .highlighter(highlight().field("field1").order("score").preTags("<x>").postTags("</x>"));
- searchResponse = client().search(searchRequest("test").source(source)).actionGet();
- assertThat(searchResponse.getHits().totalHits, equalTo(2L));
- for (int i = 0; i < 2; i++) {
- assertHighlight(searchResponse, i, "field1", 0, 1, anyOf(
- equalTo("The quick <x>browse</x> button is a fancy thing, right <x>bro</x>?"),
- equalTo("The quick <x>brown</x> fox jumps over the lazy dog")));
- }
+ searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+ assertThat(searchResponse.getHits().totalHits, equalTo(2L));
+ for (int i = 0; i < 2; i++) {
+ assertHighlight(searchResponse, i, "field1", 0, 1, anyOf(
+ equalTo("The quick <x>browse</x> button is a fancy thing, right <x>bro</x>?"),
+ equalTo("The quick <x>brown</x> fox jumps over the lazy dog")));
+ }
- source = searchSource()
- .query(matchPhrasePrefixQuery("field1", "quick bro"))
- .highlighter(highlight().field("field1").order("score").preTags("<x>").postTags("</x>").highlighterType(type));
+ source = searchSource()
+ .query(matchPhrasePrefixQuery("field1", "quick bro"))
+ .highlighter(highlight().field("field1").order("score").preTags("<x>").postTags("</x>"));
+
+ searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+
+ assertHighlight(searchResponse, 0, "field1", 0, 1, anyOf(
+ equalTo("The <x>quick</x> <x>browse</x> button is a fancy thing, right bro?"),
+ equalTo("The <x>quick</x> <x>brown</x> fox jumps over the lazy dog")));
+ assertHighlight(searchResponse, 1, "field1", 0, 1, anyOf(
+ equalTo("The <x>quick</x> <x>browse</x> button is a fancy thing, right bro?"),
+ equalTo("The <x>quick</x> <x>brown</x> fox jumps over the lazy dog")));
+
+ // with synonyms
+ client().prepareIndex("test", "type2", "0").setSource(
+ "field4", "The quick brown fox jumps over the lazy dog",
+ "field3", "The quick brown fox jumps over the lazy dog").get();
+ client().prepareIndex("test", "type2", "1").setSource(
+ "field4", "The quick browse button is a fancy thing, right bro?").get();
+ client().prepareIndex("test", "type2", "2").setSource(
+ "field4", "a quick fast blue car").get();
+ refresh();
- searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+ source = searchSource().postFilter(typeQuery("type2")).query(matchPhrasePrefixQuery("field3", "fast bro"))
+ .highlighter(highlight().field("field3").order("score").preTags("<x>").postTags("</x>"));
- assertHighlight(searchResponse, 0, "field1", 0, 1, anyOf(
- equalTo("The <x>quick browse</x> button is a fancy thing, right bro?"),
- equalTo("The <x>quick brown</x> fox jumps over the lazy dog"),
- equalTo("The <x>quick</x> <x>browse</x> button is a fancy thing, right bro?"),
- equalTo("The <x>quick</x> <x>brown</x> fox jumps over the lazy dog")));
- assertHighlight(searchResponse, 1, "field1", 0, 1, anyOf(
- equalTo("The <x>quick browse</x> button is a fancy thing, right bro?"),
- equalTo("The <x>quick brown</x> fox jumps over the lazy dog"),
- equalTo("The <x>quick</x> <x>browse</x> button is a fancy thing, right bro?"),
- equalTo("The <x>quick</x> <x>brown</x> fox jumps over the lazy dog")));
-
- // with synonyms
- client().prepareIndex("test", "type2", "0").setSource(
- "field4", "The quick brown fox jumps over the lazy dog",
- "field3", "The quick brown fox jumps over the lazy dog").get();
- client().prepareIndex("test", "type2", "1").setSource(
- "field4", "The quick browse button is a fancy thing, right bro?").get();
- client().prepareIndex("test", "type2", "2").setSource(
- "field4", "a quick fast blue car").get();
- refresh();
-
- source = searchSource().postFilter(typeQuery("type2")).query(matchPhrasePrefixQuery("field3", "fast bro"))
- .highlighter(highlight().field("field3").order("score").preTags("<x>").postTags("</x>").highlighterType(type));
+ searchResponse = client().search(searchRequest("test").source(source)).actionGet();
- searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+ assertHighlight(searchResponse, 0, "field3", 0, 1, equalTo("The <x>quick</x> <x>brown</x> fox jumps over the lazy dog"));
- assertHighlight(searchResponse, 0, "field3", 0, 1, equalTo("The <x>quick</x> <x>brown</x> fox jumps over the lazy dog"));
+ logger.info("--> highlighting and searching on field4");
+ source = searchSource().postFilter(typeQuery("type2")).query(matchPhrasePrefixQuery("field4", "the fast bro"))
+ .highlighter(highlight().field("field4").order("score").preTags("<x>").postTags("</x>"));
+ searchResponse = client().search(searchRequest("test").source(source)).actionGet();
- logger.info("--> highlighting and searching on field4");
- source = searchSource().postFilter(typeQuery("type2")).query(matchPhrasePrefixQuery("field4", "the fast bro"))
- .highlighter(highlight().field("field4").order("score").preTags("<x>").postTags("</x>").highlighterType(type));
- searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+ assertHighlight(searchResponse, 0, "field4", 0, 1, anyOf(
+ equalTo("<x>The</x> <x>quick</x> <x>browse</x> button is a fancy thing, right bro?"),
+ equalTo("<x>The</x> <x>quick</x> <x>brown</x> fox jumps over the lazy dog")));
+ assertHighlight(searchResponse, 1, "field4", 0, 1, anyOf(
+ equalTo("<x>The</x> <x>quick</x> <x>browse</x> button is a fancy thing, right bro?"),
+ equalTo("<x>The</x> <x>quick</x> <x>brown</x> fox jumps over the lazy dog")));
- assertHighlight(searchResponse, 0, "field4", 0, 1, anyOf(
- equalTo("<x>The quick browse</x> button is a fancy thing, right bro?"),
- equalTo("<x>The quick brown</x> fox jumps over the lazy dog"),
- equalTo("<x>The</x> <x>quick</x> <x>browse</x> button is a fancy thing, right bro?"),
- equalTo("<x>The</x> <x>quick</x> <x>brown</x> fox jumps over the lazy dog")));
- assertHighlight(searchResponse, 1, "field4", 0, 1, anyOf(
- equalTo("<x>The quick browse</x> button is a fancy thing, right bro?"),
- equalTo("<x>The quick brown</x> fox jumps over the lazy dog"),
- equalTo("<x>The</x> <x>quick</x> <x>browse</x> button is a fancy thing, right bro?"),
- equalTo("<x>The</x> <x>quick</x> <x>brown</x> fox jumps over the lazy dog")));
-
- logger.info("--> highlighting and searching on field4");
- source = searchSource().postFilter(typeQuery("type2")).query(matchPhrasePrefixQuery("field4", "a fast quick blue ca"))
- .highlighter(highlight().field("field4").order("score").preTags("<x>").postTags("</x>").highlighterType(type));
- searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+ logger.info("--> highlighting and searching on field4");
+ source = searchSource().postFilter(typeQuery("type2")).query(matchPhrasePrefixQuery("field4", "a fast quick blue ca"))
+ .highlighter(highlight().field("field4").order("score").preTags("<x>").postTags("</x>"));
+ searchResponse = client().search(searchRequest("test").source(source)).actionGet();
- assertHighlight(searchResponse, 0, "field4", 0, 1,
- anyOf(equalTo("<x>a quick fast blue car</x>"),
- equalTo("<x>a</x> <x>quick</x> <x>fast</x> <x>blue</x> <x>car</x>")));
- }
+ assertHighlight(searchResponse, 0, "field4", 0, 1,
+ anyOf(equalTo("<x>a quick fast blue car</x>"),
+ equalTo("<x>a</x> <x>quick</x> <x>fast</x> <x>blue</x> <x>car</x>")));
}
public void testPlainHighlightDifferentFragmenter() throws Exception {
@@ -1560,8 +1521,9 @@ public class HighlighterSearchIT extends ESIntegTestCase {
SearchResponse response = client().prepareSearch("test")
.setQuery(QueryBuilders.matchQuery("tags", "long tag").type(MatchQuery.Type.PHRASE))
.highlighter(
- new HighlightBuilder().field(new HighlightBuilder.Field("tags").fragmentSize(-1).numOfFragments(2)
- .fragmenter("simple"))).get();
+ new HighlightBuilder().field(new HighlightBuilder.Field("tags")
+ .highlighterType("plain").fragmentSize(-1).numOfFragments(2).fragmenter("simple")))
+ .get();
assertHighlight(response, 0, "tags", 0, equalTo("this is a really <em>long</em> <em>tag</em> i would like to highlight"));
assertHighlight(response, 0, "tags", 1, 2,
@@ -1570,7 +1532,7 @@ public class HighlighterSearchIT extends ESIntegTestCase {
response = client().prepareSearch("test")
.setQuery(QueryBuilders.matchQuery("tags", "long tag").type(MatchQuery.Type.PHRASE))
.highlighter(
- new HighlightBuilder().field(new HighlightBuilder.Field("tags").fragmentSize(-1).numOfFragments(2)
+ new HighlightBuilder().field(new Field("tags").highlighterType("plain").fragmentSize(-1).numOfFragments(2)
.fragmenter("span"))).get();
assertHighlight(response, 0, "tags", 0,
@@ -1581,7 +1543,7 @@ public class HighlighterSearchIT extends ESIntegTestCase {
assertFailures(client().prepareSearch("test")
.setQuery(QueryBuilders.matchQuery("tags", "long tag").type(MatchQuery.Type.PHRASE))
.highlighter(
- new HighlightBuilder().field(new HighlightBuilder.Field("tags").fragmentSize(-1).numOfFragments(2)
+ new HighlightBuilder().field(new Field("tags").highlighterType("plain").fragmentSize(-1).numOfFragments(2)
.fragmenter("invalid"))),
RestStatus.BAD_REQUEST,
containsString("unknown fragmenter option [invalid] for the field [tags]"));
@@ -1635,15 +1597,13 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.endObject()).get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- // This query used to fail when the field to highlight was absent
- SearchResponse response = client().prepareSearch("test")
- .setQuery(QueryBuilders.matchQuery("field", "highlight").type(MatchQuery.Type.BOOLEAN))
- .highlighter(
- new HighlightBuilder().field(new HighlightBuilder.Field("highlight_field").fragmentSize(-1).numOfFragments(1)
- .fragmenter("simple")).highlighterType(type)).get();
- assertThat(response.getHits().getHits()[0].getHighlightFields().isEmpty(), equalTo(true));
- }
+ // This query used to fail when the field to highlight was absent
+ SearchResponse response = client().prepareSearch("test")
+ .setQuery(QueryBuilders.matchQuery("field", "highlight").type(MatchQuery.Type.BOOLEAN))
+ .highlighter(
+ new HighlightBuilder().field(new HighlightBuilder.Field("highlight_field").fragmentSize(-1).numOfFragments(1)
+ .fragmenter("simple"))).get();
+ assertThat(response.getHits().getHits()[0].getHighlightFields().isEmpty(), equalTo(true));
}
// Issue #3211
@@ -1688,13 +1648,11 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.setSource("text", "elasticsearch test").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- SearchResponse response = client().prepareSearch("test")
- .setQuery(QueryBuilders.matchQuery("text", "test").type(MatchQuery.Type.BOOLEAN))
- .highlighter(new HighlightBuilder().field("text").highlighterType(type)).execute().actionGet();
- // PatternAnalyzer will throw an exception if it is resetted twice
- assertHitCount(response, 1L);
- }
+ SearchResponse response = client().prepareSearch("test")
+ .setQuery(QueryBuilders.matchQuery("text", "test").type(MatchQuery.Type.BOOLEAN))
+ .highlighter(new HighlightBuilder().field("text")).execute().actionGet();
+ // PatternAnalyzer will throw an exception if it is resetted twice
+ assertHitCount(response, 1L);
}
public void testHighlightUsesHighlightQuery() throws IOException {
@@ -1759,10 +1717,6 @@ public class HighlighterSearchIT extends ESIntegTestCase {
response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
assertNotHighlighted(response, 0, "text");
- field.highlighterType("postings");
- response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
- assertNotHighlighted(response, 0, "text");
-
field.highlighterType("unified");
response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
assertNotHighlighted(response, 0, "text");
@@ -1776,10 +1730,6 @@ public class HighlighterSearchIT extends ESIntegTestCase {
response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
assertNotHighlighted(response, 0, "text");
- field.highlighterType("postings");
- response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
- assertNotHighlighted(response, 0, "text");
-
field.highlighterType("unified");
response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
assertNotHighlighted(response, 0, "text");
@@ -1799,11 +1749,6 @@ public class HighlighterSearchIT extends ESIntegTestCase {
response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
assertHighlight(response, 0, "text", 0, 1, equalTo("I am pretty long so some"));
- // Postings hl also works but the fragment is the whole first sentence (size ignored)
- field.highlighterType("postings");
- response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
- assertHighlight(response, 0, "text", 0, 1, equalTo("I am pretty long so some of me should get cut off."));
-
// We can also ask for a fragment longer than the input string and get the whole string
field.highlighterType("plain").noMatchSize(text.length() * 2);
response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
@@ -1817,11 +1762,6 @@ public class HighlighterSearchIT extends ESIntegTestCase {
response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
assertHighlight(response, 0, "text", 0, 1, equalTo(text));
- //no difference using postings hl as the noMatchSize is ignored (just needs to be greater than 0)
- field.highlighterType("postings");
- response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
- assertHighlight(response, 0, "text", 0, 1, equalTo("I am pretty long so some of me should get cut off."));
-
// We can also ask for a fragment exactly the size of the input field and get the whole field
field.highlighterType("plain").noMatchSize(text.length());
response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
@@ -1836,11 +1776,6 @@ public class HighlighterSearchIT extends ESIntegTestCase {
response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
assertHighlight(response, 0, "text", 0, 1, equalTo(text));
- //no difference using postings hl as the noMatchSize is ignored (just needs to be greater than 0)
- field.highlighterType("postings");
- response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
- assertHighlight(response, 0, "text", 0, 1, equalTo("I am pretty long so some of me should get cut off."));
-
// You can set noMatchSize globally in the highlighter as well
field.highlighterType("plain").noMatchSize(null);
response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field).noMatchSize(21)).get();
@@ -1854,10 +1789,6 @@ public class HighlighterSearchIT extends ESIntegTestCase {
response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field).noMatchSize(21)).get();
assertHighlight(response, 0, "text", 0, 1, equalTo("I am pretty long so some"));
- field.highlighterType("postings");
- response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field).noMatchSize(21)).get();
- assertHighlight(response, 0, "text", 0, 1, equalTo("I am pretty long so some of me should get cut off."));
-
// We don't break if noMatchSize is less than zero though
field.highlighterType("plain").noMatchSize(randomIntBetween(Integer.MIN_VALUE, -1));
response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
@@ -1867,10 +1798,6 @@ public class HighlighterSearchIT extends ESIntegTestCase {
response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
assertNotHighlighted(response, 0, "text");
- field.highlighterType("postings");
- response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
- assertNotHighlighted(response, 0, "text");
-
field.highlighterType("unified");
response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
assertNotHighlighted(response, 0, "text");
@@ -1903,11 +1830,6 @@ public class HighlighterSearchIT extends ESIntegTestCase {
response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
assertHighlight(response, 0, "text", 0, 1, equalTo("I am pretty long so some"));
- // Postings hl also works but the fragment is the whole first sentence (size ignored)
- field.highlighterType("postings");
- response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
- assertHighlight(response, 0, "text", 0, 1, equalTo("I am pretty long so some of me should get cut off."));
-
// And noMatchSize returns nothing when the first entry is empty string!
index("test", "type1", "2", "text", new String[] {"", text2});
refresh();
@@ -1925,12 +1847,6 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.highlighter(new HighlightBuilder().field(field)).get();
assertNotHighlighted(response, 0, "text");
- field.highlighterType("postings");
- response = client().prepareSearch("test")
- .setQuery(idsQueryBuilder)
- .highlighter(new HighlightBuilder().field(field)).get();
- assertNotHighlighted(response, 0, "text");
-
// except for the unified highlighter which starts from the first string with actual content
field.highlighterType("unified");
response = client().prepareSearch("test")
@@ -1954,12 +1870,6 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.highlighter(new HighlightBuilder().field(field)).get();
assertNotHighlighted(response, 0, "text");
- field.highlighterType("postings");
- response = client().prepareSearch("test")
- .setQuery(idsQueryBuilder)
- .highlighter(new HighlightBuilder().field(field)).get();
- assertNotHighlighted(response, 0, "text");
-
field.highlighterType("unified");
response = client().prepareSearch("test")
.setQuery(idsQueryBuilder)
@@ -2000,10 +1910,6 @@ public class HighlighterSearchIT extends ESIntegTestCase {
response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
assertNotHighlighted(response, 0, "text");
- field.highlighterType("postings");
- response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
- assertNotHighlighted(response, 0, "text");
-
field.highlighterType("unified");
response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
assertNotHighlighted(response, 0, "text");
@@ -2038,11 +1944,6 @@ public class HighlighterSearchIT extends ESIntegTestCase {
assertHighlight(response, 0, "text", 0, 1, equalTo("This is the first sentence"));
- // Postings hl also works but the fragment is the whole first sentence (size ignored)
- field.highlighterType("postings");
- response = client().prepareSearch("test").highlighter(new HighlightBuilder().field(field)).get();
- assertHighlight(response, 0, "text", 0, 1, equalTo("This is the first sentence."));
-
//if there's a match we only return the values with matches (whole value as number_of_fragments == 0)
MatchQueryBuilder queryBuilder = QueryBuilders.matchQuery("text", "third fifth");
field.highlighterType("plain");
@@ -2055,11 +1956,6 @@ public class HighlighterSearchIT extends ESIntegTestCase {
assertHighlight(response, 0, "text", 0, 2, equalTo("This is the <em>third</em> sentence. This is the fourth sentence."));
assertHighlight(response, 0, "text", 1, 2, equalTo("This is the <em>fifth</em> sentence"));
- field.highlighterType("postings");
- response = client().prepareSearch("test").setQuery(queryBuilder).highlighter(new HighlightBuilder().field(field)).get();
- assertHighlight(response, 0, "text", 0, 2, equalTo("This is the <em>third</em> sentence. This is the fourth sentence."));
- assertHighlight(response, 0, "text", 1, 2, equalTo("This is the <em>fifth</em> sentence"));
-
field.highlighterType("unified");
response = client().prepareSearch("test").setQuery(queryBuilder).highlighter(new HighlightBuilder().field(field)).get();
assertHighlight(response, 0, "text", 0, 2, equalTo("This is the <em>third</em> sentence. This is the fourth sentence."));
@@ -2074,49 +1970,42 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.setSource("field1", "this is a test", "field2", "The quick brown fox jumps over the lazy quick dog").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- logger.info("--> highlighting and searching on field1");
- SearchSourceBuilder source = searchSource()
- .query(termQuery("field1", "test"))
- .highlighter(highlight().field("field1").preTags("<xxx>").postTags("</xxx>").highlighterType(type));
- SearchResponse searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+ logger.info("--> highlighting and searching on field1");
+ SearchSourceBuilder source = searchSource()
+ .query(termQuery("field1", "test"))
+ .highlighter(highlight().field("field1").preTags("<xxx>").postTags("</xxx>"));
+ SearchResponse searchResponse = client().search(searchRequest("test").source(source)).actionGet();
- assertHighlight(searchResponse, 0, "field1", 0, 1, equalTo("this is a <xxx>test</xxx>"));
+ assertHighlight(searchResponse, 0, "field1", 0, 1, equalTo("this is a <xxx>test</xxx>"));
- logger.info("--> searching on field1, highlighting on field1");
- source = searchSource()
- .query(termQuery("field1", "test"))
- .highlighter(highlight().field("field1").preTags("<xxx>").postTags("</xxx>").highlighterType(type));
+ logger.info("--> searching on field1, highlighting on field1");
+ source = searchSource()
+ .query(termQuery("field1", "test"))
+ .highlighter(highlight().field("field1").preTags("<xxx>").postTags("</xxx>"));
- searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+ searchResponse = client().search(searchRequest("test").source(source)).actionGet();
- assertHighlight(searchResponse, 0, "field1", 0, 1, equalTo("this is a <xxx>test</xxx>"));
+ assertHighlight(searchResponse, 0, "field1", 0, 1, equalTo("this is a <xxx>test</xxx>"));
- logger.info("--> searching on field2, highlighting on field2");
- source = searchSource()
- .query(termQuery("field2", "quick"))
- .highlighter(highlight().field("field2").order("score").preTags("<xxx>").postTags("</xxx>").highlighterType(type));
+ logger.info("--> searching on field2, highlighting on field2");
+ source = searchSource()
+ .query(termQuery("field2", "quick"))
+ .highlighter(highlight().field("field2").order("score").preTags("<xxx>").postTags("</xxx>"));
- searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+ searchResponse = client().search(searchRequest("test").source(source)).actionGet();
- assertHighlight(searchResponse, 0, "field2", 0, 1,
- equalTo("The <xxx>quick</xxx> brown fox jumps over the lazy <xxx>quick</xxx> dog"));
+ assertHighlight(searchResponse, 0, "field2", 0, 1,
+ equalTo("The <xxx>quick</xxx> brown fox jumps over the lazy <xxx>quick</xxx> dog"));
- logger.info("--> searching on field2, highlighting on field2");
- source = searchSource()
- .query(matchPhraseQuery("field2", "quick brown"))
- .highlighter(highlight().field("field2").preTags("<xxx>").postTags("</xxx>").highlighterType(type));
+ logger.info("--> searching on field2, highlighting on field2");
+ source = searchSource()
+ .query(matchPhraseQuery("field2", "quick brown"))
+ .highlighter(highlight().field("field2").preTags("<xxx>").postTags("</xxx>"));
- searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+ searchResponse = client().search(searchRequest("test").source(source)).actionGet();
- if (type == null) {
- //phrase query results in highlighting all different terms regardless of their positions
- assertHighlight(searchResponse, 0, "field2", 0, 1,
- equalTo("The <xxx>quick</xxx> <xxx>brown</xxx> fox jumps over the lazy <xxx>quick</xxx> dog"));
- } else {
- assertHighlight(searchResponse, 0, "field2", 0, 1,
- equalTo("The <xxx>quick</xxx> <xxx>brown</xxx> fox jumps over the lazy quick dog"));
- }
+ assertHighlight(searchResponse, 0, "field2", 0, 1,
+ equalTo("The <xxx>quick</xxx> <xxx>brown</xxx> fox jumps over the lazy quick dog"));
//lets fall back to the standard highlighter then, what people would do to highlight query matches
logger.info("--> searching on field2, highlighting on field2, falling back to the plain highlighter");
@@ -2125,11 +2014,10 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.highlighter(highlight()
.field("field2").preTags("<xxx>").postTags("</xxx>").highlighterType("plain").requireFieldMatch(false));
- searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+ searchResponse = client().search(searchRequest("test").source(source)).actionGet();
- assertHighlight(searchResponse, 0, "field2", 0, 1,
- equalTo("The <xxx>quick</xxx> <xxx>brown</xxx> fox jumps over the lazy quick dog"));
- }
+ assertHighlight(searchResponse, 0, "field2", 0, 1,
+ equalTo("The <xxx>quick</xxx> <xxx>brown</xxx> fox jumps over the lazy quick dog"));
}
public void testPostingsHighlighterMultipleFields() throws Exception {
@@ -2141,15 +2029,13 @@ public class HighlighterSearchIT extends ESIntegTestCase {
"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>."));
- }
+ SearchResponse response = client().prepareSearch("test")
+ .setQuery(QueryBuilders.matchQuery("field1", "fox"))
+ .highlighter(
+ new HighlightBuilder().field(new Field("field1").preTags("<1>").postTags("</1>")
+ .requireFieldMatch(true)))
+ .get();
+ assertHighlight(response, 0, "field1", 0, 1, equalTo("The <b>quick<b> brown <1>fox</1>."));
}
public void testPostingsHighlighterNumberOfFragments() throws Exception {
@@ -2164,53 +2050,50 @@ public class HighlighterSearchIT extends ESIntegTestCase {
refresh();
- for (String type : UNIFIED_AND_NULL) {
- logger.info("--> highlighting and searching on field1");
- SearchSourceBuilder source = searchSource()
- .query(termQuery("field1", "fox"))
- .highlighter(highlight()
- .field(new Field("field1").numOfFragments(5).preTags("<field1>").postTags("</field1>").highlighterType(type)));
-
- SearchResponse searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+ logger.info("--> highlighting and searching on field1");
+ SearchSourceBuilder source = searchSource()
+ .query(termQuery("field1", "fox"))
+ .highlighter(highlight()
+ .field(new Field("field1").numOfFragments(5).preTags("<field1>").postTags("</field1>")));
- assertHighlight(searchResponse, 0, "field1", 0, equalTo("The quick brown <field1>fox</field1> jumps over the lazy dog."));
- assertHighlight(searchResponse, 0, "field1", 1, equalTo("The lazy red <field1>fox</field1> jumps over the quick dog."));
- assertHighlight(searchResponse, 0, "field1", 2, 3, equalTo("The quick brown dog jumps over the lazy <field1>fox</field1>."));
+ SearchResponse searchResponse = client().search(searchRequest("test").source(source)).actionGet();
- client().prepareIndex("test", "type1", "2")
- .setSource("field1", new String[]{
- "The quick brown fox jumps over the lazy dog. Second sentence not finished",
- "The lazy red fox jumps over the quick dog.",
- "The quick brown dog jumps over the lazy fox."}).get();
- refresh();
+ assertHighlight(searchResponse, 0, "field1", 0, equalTo("The quick brown <field1>fox</field1> jumps over the lazy dog."));
+ assertHighlight(searchResponse, 0, "field1", 1, equalTo("The lazy red <field1>fox</field1> jumps over the quick dog."));
+ assertHighlight(searchResponse, 0, "field1", 2, 3, equalTo("The quick brown dog jumps over the lazy <field1>fox</field1>."));
- source = searchSource()
- .query(termQuery("field1", "fox"))
- .highlighter(highlight()
- .field(new Field("field1").numOfFragments(0).preTags("<field1>").postTags("</field1>").highlighterType(type)));
+ client().prepareIndex("test", "type1", "2")
+ .setSource("field1", new String[]{
+ "The quick brown fox jumps over the lazy dog. Second sentence not finished",
+ "The lazy red fox jumps over the quick dog.",
+ "The quick brown dog jumps over the lazy fox."}).get();
+ refresh();
- searchResponse = client().search(searchRequest("test").source(source)).actionGet();
- assertHitCount(searchResponse, 2L);
-
- for (SearchHit searchHit : searchResponse.getHits()) {
- if ("1".equals(searchHit.getId())) {
- assertHighlight(searchHit, "field1", 0, 1, equalTo("The quick brown <field1>fox</field1> jumps over the lazy dog. "
- + "The lazy red <field1>fox</field1> jumps over the quick dog. "
- + "The quick brown dog jumps over the lazy <field1>fox</field1>."));
- } else if ("2".equals(searchHit.getId())) {
- assertHighlight(searchHit, "field1", 0, 3,
- equalTo("The quick brown <field1>fox</field1> jumps over the lazy dog. Second sentence not finished"));
- assertHighlight(searchHit, "field1", 1, 3, equalTo("The lazy red <field1>fox</field1> jumps over the quick dog."));
- assertHighlight(searchHit, "field1", 2, 3, equalTo("The quick brown dog jumps over the lazy <field1>fox</field1>."));
- } else {
- fail("Only hits with id 1 and 2 are returned");
- }
+ source = searchSource()
+ .query(termQuery("field1", "fox"))
+ .highlighter(highlight()
+ .field(new Field("field1").numOfFragments(0).preTags("<field1>").postTags("</field1>")));
+
+ searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+ assertHitCount(searchResponse, 2L);
+
+ for (SearchHit searchHit : searchResponse.getHits()) {
+ if ("1".equals(searchHit.getId())) {
+ assertHighlight(searchHit, "field1", 0, 1, equalTo("The quick brown <field1>fox</field1> jumps over the lazy dog. "
+ + "The lazy red <field1>fox</field1> jumps over the quick dog. "
+ + "The quick brown dog jumps over the lazy <field1>fox</field1>."));
+ } else if ("2".equals(searchHit.getId())) {
+ assertHighlight(searchHit, "field1", 0, 3,
+ equalTo("The quick brown <field1>fox</field1> jumps over the lazy dog. Second sentence not finished"));
+ assertHighlight(searchHit, "field1", 1, 3, equalTo("The lazy red <field1>fox</field1> jumps over the quick dog."));
+ assertHighlight(searchHit, "field1", 2, 3, equalTo("The quick brown dog jumps over the lazy <field1>fox</field1>."));
+ } else {
+ fail("Only hits with id 1 and 2 are returned");
}
}
}
public void testMultiMatchQueryHighlight() throws IOException {
- String[] highlighterTypes = new String[] {"fvh", "plain", "postings", "unified"};
XContentBuilder mapping = XContentFactory.jsonBuilder().startObject().startObject("type1")
.startObject("properties")
.startObject("field1")
@@ -2233,23 +2116,10 @@ public class HighlighterSearchIT extends ESIntegTestCase {
refresh();
final int iters = scaledRandomIntBetween(20, 30);
for (int i = 0; i < iters; i++) {
- String highlighterType = rarely() ? null : RandomPicks.randomFrom(random(), highlighterTypes);
- MultiMatchQueryBuilder.Type[] supportedQueryTypes;
- if ("postings".equals(highlighterType)) {
- /*
- * phrase_prefix is not supported by postings highlighter, as it rewrites against an empty reader, the prefix will never
- * match any term
- */
- supportedQueryTypes = new MultiMatchQueryBuilder.Type[]{
- MultiMatchQueryBuilder.Type.BEST_FIELDS,
- MultiMatchQueryBuilder.Type.CROSS_FIELDS,
- MultiMatchQueryBuilder.Type.MOST_FIELDS,
- MultiMatchQueryBuilder.Type.PHRASE};
- } else {
- supportedQueryTypes = MultiMatchQueryBuilder.Type.values();
- }
- MultiMatchQueryBuilder.Type matchQueryType = RandomPicks.randomFrom(random(), supportedQueryTypes);
- MultiMatchQueryBuilder multiMatchQueryBuilder = multiMatchQuery("the quick brown fox", "field1", "field2").type(matchQueryType);
+ String highlighterType = rarely() ? null : RandomPicks.randomFrom(random(), ALL_TYPES);
+ MultiMatchQueryBuilder.Type matchQueryType = RandomPicks.randomFrom(random(), MultiMatchQueryBuilder.Type.values());
+ MultiMatchQueryBuilder multiMatchQueryBuilder = multiMatchQuery("the quick brown fox", "field1", "field2")
+ .type(matchQueryType);
SearchSourceBuilder source = searchSource()
.query(multiMatchQueryBuilder)
@@ -2278,26 +2148,24 @@ public class HighlighterSearchIT extends ESIntegTestCase {
+ "This one contains no matches."}).get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- logger.info("--> highlighting and searching on field1");
- SearchSourceBuilder source = searchSource()
- .query(termQuery("field1", "sentence"))
- .highlighter(highlight().field("field1").order("score").highlighterType(type));
+ logger.info("--> highlighting and searching on field1");
+ SearchSourceBuilder source = searchSource()
+ .query(termQuery("field1", "sentence"))
+ .highlighter(highlight().field("field1").order("score"));
- SearchResponse searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+ SearchResponse searchResponse = client().search(searchRequest("test").source(source)).actionGet();
- Map<String, HighlightField> highlightFieldMap = searchResponse.getHits().getAt(0).getHighlightFields();
- assertThat(highlightFieldMap.size(), equalTo(1));
- HighlightField field1 = highlightFieldMap.get("field1");
- assertThat(field1.fragments().length, equalTo(5));
- assertThat(field1.fragments()[0].string(),
- equalTo("This <em>sentence</em> contains three <em>sentence</em> occurrences (<em>sentence</em>)."));
- assertThat(field1.fragments()[1].string(), equalTo("This <em>sentence</em> contains two <em>sentence</em> matches."));
- assertThat(field1.fragments()[2].string(), equalTo("This is the second value's first <em>sentence</em>."));
- assertThat(field1.fragments()[3].string(), equalTo("This <em>sentence</em> contains one match, not that short."));
- assertThat(field1.fragments()[4].string(),
- equalTo("One <em>sentence</em> match here and scored lower since the text is quite long, not that appealing."));
- }
+ Map<String, HighlightField> highlightFieldMap = searchResponse.getHits().getAt(0).getHighlightFields();
+ assertThat(highlightFieldMap.size(), equalTo(1));
+ HighlightField field1 = highlightFieldMap.get("field1");
+ assertThat(field1.fragments().length, equalTo(5));
+ assertThat(field1.fragments()[0].string(),
+ equalTo("This <em>sentence</em> contains three <em>sentence</em> occurrences (<em>sentence</em>)."));
+ assertThat(field1.fragments()[1].string(), equalTo("This <em>sentence</em> contains two <em>sentence</em> matches."));
+ assertThat(field1.fragments()[2].string(), equalTo("This is the second value's first <em>sentence</em>."));
+ assertThat(field1.fragments()[3].string(), equalTo("This <em>sentence</em> contains one match, not that short."));
+ assertThat(field1.fragments()[4].string(),
+ equalTo("One <em>sentence</em> match here and scored lower since the text is quite long, not that appealing."));
}
public void testPostingsHighlighterEscapeHtml() throws Exception {
@@ -2311,15 +2179,13 @@ public class HighlighterSearchIT extends ESIntegTestCase {
}
indexRandom(true, indexRequestBuilders);
- for (String type : UNIFIED_AND_NULL) {
- SearchResponse searchResponse = client().prepareSearch()
- .setQuery(matchQuery("title", "test"))
- .highlighter(new HighlightBuilder().field("title").encoder("html").highlighterType(type)).get();
+ SearchResponse searchResponse = client().prepareSearch()
+ .setQuery(matchQuery("title", "test"))
+ .highlighter(new HighlightBuilder().field("title").encoder("html")).get();
- for (int i = 0; i < indexRequestBuilders.length; i++) {
- assertHighlight(searchResponse, i, "title", 0, 1,
- equalTo("This is a html escaping highlighting <em>test</em> for *&amp;?"));
- }
+ for (int i = 0; i < indexRequestBuilders.length; i++) {
+ assertHighlight(searchResponse, i, "title", 0, 1,
+ equalTo("This is a html escaping highlighting <em>test</em> for *&amp;?"));
}
}
@@ -2344,28 +2210,26 @@ public class HighlighterSearchIT extends ESIntegTestCase {
client().prepareIndex("test", "type1", "1").setSource("title", "this is a test . Second sentence.").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- // simple search on body with standard analyzer with a simple field query
- SearchResponse searchResponse = client().prepareSearch()
- //lets make sure we analyze the query and we highlight the resulting terms
- .setQuery(matchQuery("title", "This is a Test"))
- .highlighter(new HighlightBuilder().field("title").highlighterType(type)).get();
+ // simple search on body with standard analyzer with a simple field query
+ SearchResponse searchResponse = client().prepareSearch()
+ //lets make sure we analyze the query and we highlight the resulting terms
+ .setQuery(matchQuery("title", "This is a Test"))
+ .highlighter(new HighlightBuilder().field("title")).get();
+
+ assertHitCount(searchResponse, 1L);
+ SearchHit hit = searchResponse.getHits().getAt(0);
+ //stopwords are not highlighted since not indexed
+ assertHighlight(hit, "title", 0, 1, equalTo("this is a <em>test</em> ."));
- assertHitCount(searchResponse, 1L);
- SearchHit hit = searchResponse.getHits().getAt(0);
- //stopwords are not highlighted since not indexed
- assertHighlight(hit, "title", 0, 1, equalTo("this is a <em>test</em> ."));
-
- // search on title.key and highlight on title
- searchResponse = client().prepareSearch()
- .setQuery(matchQuery("title.key", "this is a test"))
- .highlighter(new HighlightBuilder().field("title.key")).get();
- assertHitCount(searchResponse, 1L);
+ // search on title.key and highlight on title
+ searchResponse = client().prepareSearch()
+ .setQuery(matchQuery("title.key", "this is a test"))
+ .highlighter(new HighlightBuilder().field("title.key")).get();
+ assertHitCount(searchResponse, 1L);
- //stopwords are now highlighted since we used only whitespace analyzer here
- assertHighlight(searchResponse, 0, "title.key", 0, 1,
- equalTo("<em>this</em> <em>is</em> <em>a</em> <em>test</em> ."));
- }
+ //stopwords are now highlighted since we used only whitespace analyzer here
+ assertHighlight(searchResponse, 0, "title.key", 0, 1,
+ equalTo("<em>this</em> <em>is</em> <em>a</em> <em>test</em> ."));
}
public void testPostingsHighlighterMultiMapperFromSource() throws Exception {
@@ -2390,22 +2254,20 @@ public class HighlighterSearchIT extends ESIntegTestCase {
client().prepareIndex("test", "type1", "1").setSource("title", "this is a test").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- // simple search on body with standard analyzer with a simple field query
- SearchResponse searchResponse = client().prepareSearch()
- .setQuery(matchQuery("title", "this is a test"))
- .highlighter(new HighlightBuilder().field("title"))
- .get();
+ // simple search on body with standard analyzer with a simple field query
+ SearchResponse searchResponse = client().prepareSearch()
+ .setQuery(matchQuery("title", "this is a test"))
+ .highlighter(new HighlightBuilder().field("title"))
+ .get();
- assertHighlight(searchResponse, 0, "title", 0, 1, equalTo("this is a <em>test</em>"));
+ assertHighlight(searchResponse, 0, "title", 0, 1, equalTo("this is a <em>test</em>"));
- // search on title.key and highlight on title.key
- searchResponse = client().prepareSearch()
- .setQuery(matchQuery("title.key", "this is a test"))
- .highlighter(new HighlightBuilder().field("title.key").highlighterType(type)).get();
+ // search on title.key and highlight on title.key
+ searchResponse = client().prepareSearch()
+ .setQuery(matchQuery("title.key", "this is a test"))
+ .highlighter(new HighlightBuilder().field("title.key")).get();
- assertHighlight(searchResponse, 0, "title.key", 0, 1, equalTo("<em>this</em> <em>is</em> <em>a</em> <em>test</em>"));
- }
+ assertHighlight(searchResponse, 0, "title.key", 0, 1, equalTo("<em>this</em> <em>is</em> <em>a</em> <em>test</em>"));
}
public void testPostingsHighlighterShouldFailIfNoOffsets() throws Exception {
@@ -2427,26 +2289,6 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.highlighter(new HighlightBuilder().field("title"))
.get();
assertNoFailures(search);
-
- assertFailures(client().prepareSearch()
- .setQuery(matchQuery("title", "this is a test"))
- .highlighter(new HighlightBuilder().field("title").highlighterType("postings")),
- RestStatus.BAD_REQUEST,
- containsString("the field [title] should be indexed with positions and offsets in the "
- + "postings list to be used with postings highlighter"));
-
-
- assertFailures(client().prepareSearch()
- .setQuery(matchQuery("title", "this is a test"))
- .highlighter(new HighlightBuilder().field("title").highlighterType("postings")),
- RestStatus.BAD_REQUEST,
- containsString("the field [title] should be indexed with positions and offsets in the "
- + "postings list to be used with postings highlighter"));
-
- //should not fail if there is a wildcard
- assertNoFailures(client().prepareSearch()
- .setQuery(matchQuery("title", "this is a test"))
- .highlighter(new HighlightBuilder().field("tit*").highlighterType("postings")).get());
}
public void testPostingsHighlighterBoostingQuery() throws IOException {
@@ -2456,15 +2298,13 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.setSource("field1", "this is a test", "field2", "The quick brown fox jumps over the lazy dog! Second sentence.").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- logger.info("--> highlighting and searching on field1");
- SearchSourceBuilder source = searchSource()
- .query(boostingQuery(termQuery("field2", "brown"), termQuery("field2", "foobar")).negativeBoost(0.5f))
- .highlighter(highlight().field("field2").preTags("<x>").postTags("</x>").highlighterType(type));
- SearchResponse searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+ logger.info("--> highlighting and searching on field1");
+ SearchSourceBuilder source = searchSource()
+ .query(boostingQuery(termQuery("field2", "brown"), termQuery("field2", "foobar")).negativeBoost(0.5f))
+ .highlighter(highlight().field("field2").preTags("<x>").postTags("</x>"));
+ SearchResponse searchResponse = client().search(searchRequest("test").source(source)).actionGet();
- assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The quick <x>brown</x> fox jumps over the lazy dog!"));
- }
+ assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The quick <x>brown</x> fox jumps over the lazy dog!"));
}
public void testPostingsHighlighterCommonTermsQuery() throws IOException {
@@ -2475,15 +2315,13 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.setSource("field1", "this is a test", "field2", "The quick brown fox jumps over the lazy dog! Second sentence.").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- logger.info("--> highlighting and searching on field1");
- SearchSourceBuilder source = searchSource().query(commonTermsQuery("field2", "quick brown").cutoffFrequency(100))
- .highlighter(highlight().field("field2").preTags("<x>").postTags("</x>").highlighterType(type));
- SearchResponse searchResponse = client().search(searchRequest("test").source(source)).actionGet();
- assertHitCount(searchResponse, 1L);
+ logger.info("--> highlighting and searching on field1");
+ SearchSourceBuilder source = searchSource().query(commonTermsQuery("field2", "quick brown").cutoffFrequency(100))
+ .highlighter(highlight().field("field2").preTags("<x>").postTags("</x>"));
+ SearchResponse searchResponse = client().search(searchRequest("test").source(source)).actionGet();
+ assertHitCount(searchResponse, 1L);
- assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The <x>quick</x> <x>brown</x> fox jumps over the lazy dog!"));
- }
+ assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The <x>quick</x> <x>brown</x> fox jumps over the lazy dog!"));
}
private static XContentBuilder type1PostingsffsetsMapping() throws IOException {
@@ -2504,12 +2342,10 @@ public class HighlighterSearchIT extends ESIntegTestCase {
refresh();
logger.info("--> highlighting and searching on field2");
- for (String type : UNIFIED_AND_NULL) {
- SearchSourceBuilder source = searchSource().query(prefixQuery("field2", "qui"))
- .highlighter(highlight().field("field2").highlighterType(type));
- SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
- assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The <em>quick</em> brown fox jumps over the lazy dog!"));
- }
+ SearchSourceBuilder source = searchSource().query(prefixQuery("field2", "qui"))
+ .highlighter(highlight().field("field2"));
+ SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
+ assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The <em>quick</em> brown fox jumps over the lazy dog!"));
}
public void testPostingsHighlighterFuzzyQuery() throws Exception {
@@ -2520,14 +2356,12 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.setSource("field1", "this is a test", "field2", "The quick brown fox jumps over the lazy dog! Second sentence.").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- logger.info("--> highlighting and searching on field2");
- SearchSourceBuilder source = searchSource().query(fuzzyQuery("field2", "quck"))
- .highlighter(highlight().field("field2").highlighterType(type));
- SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
+ logger.info("--> highlighting and searching on field2");
+ SearchSourceBuilder source = searchSource().query(fuzzyQuery("field2", "quck"))
+ .highlighter(highlight().field("field2"));
+ SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
- assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The <em>quick</em> brown fox jumps over the lazy dog!"));
- }
+ assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The <em>quick</em> brown fox jumps over the lazy dog!"));
}
public void testPostingsHighlighterRegexpQuery() throws Exception {
@@ -2538,14 +2372,12 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.setSource("field1", "this is a test", "field2", "The quick brown fox jumps over the lazy dog! Second sentence.").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- logger.info("--> highlighting and searching on field2");
- SearchSourceBuilder source = searchSource().query(regexpQuery("field2", "qu[a-l]+k"))
- .highlighter(highlight().field("field2").highlighterType(type));
- SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
+ logger.info("--> highlighting and searching on field2");
+ SearchSourceBuilder source = searchSource().query(regexpQuery("field2", "qu[a-l]+k"))
+ .highlighter(highlight().field("field2"));
+ SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
- assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The <em>quick</em> brown fox jumps over the lazy dog!"));
- }
+ assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The <em>quick</em> brown fox jumps over the lazy dog!"));
}
public void testPostingsHighlighterWildcardQuery() throws Exception {
@@ -2556,21 +2388,19 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.setSource("field1", "this is a test", "field2", "The quick brown fox jumps over the lazy dog! Second sentence.").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- logger.info("--> highlighting and searching on field2");
- SearchSourceBuilder source = searchSource().query(wildcardQuery("field2", "qui*"))
- .highlighter(highlight().field("field2").highlighterType(type));
- SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
+ logger.info("--> highlighting and searching on field2");
+ SearchSourceBuilder source = searchSource().query(wildcardQuery("field2", "qui*"))
+ .highlighter(highlight().field("field2"));
+ SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
- assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The <em>quick</em> brown fox jumps over the lazy dog!"));
+ assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The <em>quick</em> brown fox jumps over the lazy dog!"));
- source = searchSource().query(wildcardQuery("field2", "qu*k"))
- .highlighter(highlight().field("field2").highlighterType(type));
- searchResponse = client().prepareSearch("test").setSource(source).get();
- assertHitCount(searchResponse, 1L);
+ source = searchSource().query(wildcardQuery("field2", "qu*k"))
+ .highlighter(highlight().field("field2"));
+ searchResponse = client().prepareSearch("test").setSource(source).get();
+ assertHitCount(searchResponse, 1L);
- assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The <em>quick</em> brown fox jumps over the lazy dog!"));
- }
+ assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The <em>quick</em> brown fox jumps over the lazy dog!"));
}
public void testPostingsHighlighterTermRangeQuery() throws Exception {
@@ -2580,14 +2410,12 @@ public class HighlighterSearchIT extends ESIntegTestCase {
client().prepareIndex("test", "type1").setSource("field1", "this is a test", "field2", "aaab").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- logger.info("--> highlighting and searching on field2");
- SearchSourceBuilder source = searchSource().query(rangeQuery("field2").gte("aaaa").lt("zzzz"))
- .highlighter(highlight().field("field2").highlighterType(type));
- SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
+ logger.info("--> highlighting and searching on field2");
+ SearchSourceBuilder source = searchSource().query(rangeQuery("field2").gte("aaaa").lt("zzzz"))
+ .highlighter(highlight().field("field2"));
+ SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
- assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("<em>aaab</em>"));
- }
+ assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("<em>aaab</em>"));
}
public void testPostingsHighlighterQueryString() throws Exception {
@@ -2598,13 +2426,11 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.setSource("field1", "this is a test", "field2", "The quick brown fox jumps over the lazy dog! Second sentence.").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- logger.info("--> highlighting and searching on field2");
- SearchSourceBuilder source = searchSource().query(queryStringQuery("qui*").defaultField("field2"))
- .highlighter(highlight().field("field2").highlighterType(type));
- SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
- assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The <em>quick</em> brown fox jumps over the lazy dog!"));
- }
+ logger.info("--> highlighting and searching on field2");
+ SearchSourceBuilder source = searchSource().query(queryStringQuery("qui*").defaultField("field2"))
+ .highlighter(highlight().field("field2"));
+ SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
+ assertHighlight(searchResponse, 0, "field2", 0, 1, equalTo("The <em>quick</em> brown fox jumps over the lazy dog!"));
}
public void testPostingsHighlighterRegexpQueryWithinConstantScoreQuery() throws Exception {
@@ -2614,13 +2440,11 @@ public class HighlighterSearchIT extends ESIntegTestCase {
client().prepareIndex("test", "type1").setSource("field1", "The photography word will get highlighted").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- logger.info("--> highlighting and searching on field1");
- SearchSourceBuilder source = searchSource().query(constantScoreQuery(regexpQuery("field1", "pho[a-z]+")))
- .highlighter(highlight().field("field1").highlighterType(type));
- SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
- assertHighlight(searchResponse, 0, "field1", 0, 1, equalTo("The <em>photography</em> word will get highlighted"));
- }
+ logger.info("--> highlighting and searching on field1");
+ SearchSourceBuilder source = searchSource().query(constantScoreQuery(regexpQuery("field1", "pho[a-z]+")))
+ .highlighter(highlight().field("field1"));
+ SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
+ assertHighlight(searchResponse, 0, "field1", 0, 1, equalTo("The <em>photography</em> word will get highlighted"));
}
public void testPostingsHighlighterMultiTermQueryMultipleLevels() throws Exception {
@@ -2630,16 +2454,14 @@ public class HighlighterSearchIT extends ESIntegTestCase {
client().prepareIndex("test", "type1").setSource("field1", "The photography word will get highlighted").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- logger.info("--> highlighting and searching on field1");
- SearchSourceBuilder source = searchSource().query(boolQuery()
- .should(boolQuery().mustNot(QueryBuilders.existsQuery("field1")))
- .should(matchQuery("field1", "test"))
- .should(constantScoreQuery(queryStringQuery("field1:photo*"))))
- .highlighter(highlight().field("field1").highlighterType(type));
- SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
- assertHighlight(searchResponse, 0, "field1", 0, 1, equalTo("The <em>photography</em> word will get highlighted"));
- }
+ logger.info("--> highlighting and searching on field1");
+ SearchSourceBuilder source = searchSource().query(boolQuery()
+ .should(boolQuery().mustNot(QueryBuilders.existsQuery("field1")))
+ .should(matchQuery("field1", "test"))
+ .should(constantScoreQuery(queryStringQuery("field1:photo*"))))
+ .highlighter(highlight().field("field1"));
+ SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
+ assertHighlight(searchResponse, 0, "field1", 0, 1, equalTo("The <em>photography</em> word will get highlighted"));
}
public void testPostingsHighlighterPrefixQueryWithinBooleanQuery() throws Exception {
@@ -2649,14 +2471,12 @@ public class HighlighterSearchIT extends ESIntegTestCase {
client().prepareIndex("test", "type1").setSource("field1", "The photography word will get highlighted").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- logger.info("--> highlighting and searching on field1");
- SearchSourceBuilder source = searchSource()
- .query(boolQuery().must(prefixQuery("field1", "photo")).should(matchQuery("field1", "test").minimumShouldMatch("0")))
- .highlighter(highlight().field("field1").highlighterType(type));
- SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
- assertHighlight(searchResponse, 0, "field1", 0, 1, equalTo("The <em>photography</em> word will get highlighted"));
- }
+ logger.info("--> highlighting and searching on field1");
+ SearchSourceBuilder source = searchSource()
+ .query(boolQuery().must(prefixQuery("field1", "photo")).should(matchQuery("field1", "test").minimumShouldMatch("0")))
+ .highlighter(highlight().field("field1"));
+ SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
+ assertHighlight(searchResponse, 0, "field1", 0, 1, equalTo("The <em>photography</em> word will get highlighted"));
}
public void testPostingsHighlighterQueryStringWithinFilteredQuery() throws Exception {
@@ -2666,15 +2486,13 @@ public class HighlighterSearchIT extends ESIntegTestCase {
client().prepareIndex("test", "type1").setSource("field1", "The photography word will get highlighted").get();
refresh();
- for (String type : UNIFIED_AND_NULL) {
- logger.info("--> highlighting and searching on field1");
- SearchSourceBuilder source = searchSource().query(boolQuery()
- .must(queryStringQuery("field1:photo*"))
- .mustNot(existsQuery("field_null")))
- .highlighter(highlight().field("field1").highlighterType(type));
- SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
- assertHighlight(searchResponse, 0, "field1", 0, 1, equalTo("The <em>photography</em> word will get highlighted"));
- }
+ logger.info("--> highlighting and searching on field1");
+ SearchSourceBuilder source = searchSource().query(boolQuery()
+ .must(queryStringQuery("field1:photo*"))
+ .mustNot(existsQuery("field_null")))
+ .highlighter(highlight().field("field1"));
+ SearchResponse searchResponse = client().prepareSearch("test").setSource(source).get();
+ assertHighlight(searchResponse, 0, "field1", 0, 1, equalTo("The <em>photography</em> word will get highlighted"));
}
public void testPostingsHighlighterManyDocs() throws Exception {
@@ -2691,25 +2509,23 @@ public class HighlighterSearchIT extends ESIntegTestCase {
String prefix = randomAlphaOfLengthBetween(5, 30);
prefixes.put(String.valueOf(i), prefix);
indexRequestBuilders[i] = client().prepareIndex("test", "type1", Integer.toString(i)).setSource("field1", "Sentence " + prefix
- + " test. Sentence two.");
+ + " test. Sentence two.");
}
logger.info("--> indexing docs");
indexRandom(true, indexRequestBuilders);
- for (String type : UNIFIED_AND_NULL) {
- logger.info("--> searching explicitly on field1 and highlighting on it");
- SearchRequestBuilder searchRequestBuilder = client().prepareSearch()
- .setSize(COUNT)
- .setQuery(termQuery("field1", "test"))
- .highlighter(new HighlightBuilder().field("field1").highlighterType(type));
- SearchResponse searchResponse =
- searchRequestBuilder.get();
- assertHitCount(searchResponse, COUNT);
- assertThat(searchResponse.getHits().getHits().length, equalTo(COUNT));
- for (SearchHit hit : searchResponse.getHits()) {
- String prefix = prefixes.get(hit.getId());
- assertHighlight(hit, "field1", 0, 1, equalTo("Sentence " + prefix + " <em>test</em>."));
- }
+ logger.info("--> searching explicitly on field1 and highlighting on it");
+ SearchRequestBuilder searchRequestBuilder = client().prepareSearch()
+ .setSize(COUNT)
+ .setQuery(termQuery("field1", "test"))
+ .highlighter(new HighlightBuilder().field("field1"));
+ SearchResponse searchResponse =
+ searchRequestBuilder.get();
+ assertHitCount(searchResponse, COUNT);
+ assertThat(searchResponse.getHits().getHits().length, equalTo(COUNT));
+ for (SearchHit hit : searchResponse.getHits()) {
+ String prefix = prefixes.get(hit.getId());
+ assertHighlight(hit, "field1", 0, 1, equalTo("Sentence " + prefix + " <em>test</em>."));
}
}
@@ -2755,11 +2571,6 @@ public class HighlighterSearchIT extends ESIntegTestCase {
phraseBoostTestCase("fvh");
}
- public void testPostingsHighlighterPhraseBoost() throws Exception {
- assertAcked(prepareCreate("test").addMapping("type1", type1PostingsffsetsMapping()));
- phraseBoostTestCase("postings");
- }
-
/**
* Test phrase boosting over normal term matches. Note that this will never pass with the plain highlighter
* because it doesn't support the concept of terms having a different weight based on position.
@@ -2851,7 +2662,7 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.setSource(jsonBuilder().startObject().field("text", "Arbitrary text field which will should not cause a failure").endObject())
.get();
refresh();
- String highlighterType = randomFrom("plain", "fvh", "postings", "unified");
+ String highlighterType = randomFrom(ALL_TYPES);
QueryBuilder query = QueryBuilders.boolQuery().should(QueryBuilders.geoBoundingBoxQuery("geo_point")
.setCorners(61.10078883158897, -170.15625, -64.92354174306496, 118.47656249999999))
.should(QueryBuilders.termQuery("text", "failure"));
@@ -2972,17 +2783,15 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.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>"));
- }
+ SearchResponse searchResponse = client().prepareSearch()
+ .setQuery(new FunctionScoreQueryBuilder(QueryBuilders.prefixQuery("text", "bro")))
+ .highlighter(new HighlightBuilder()
+ .field(new Field("text")))
+ .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>"));
}
public void testFiltersFunctionScoreQueryHighlight() throws Exception {
@@ -2994,18 +2803,16 @@ public class HighlighterSearchIT extends ESIntegTestCase {
new FunctionScoreQueryBuilder.FilterFunctionBuilder(QueryBuilders.termQuery("enable", "yes"),
new RandomScoreFunctionBuilder());
- for (String type : UNIFIED_AND_NULL) {
- SearchResponse searchResponse = client().prepareSearch()
- .setQuery(new FunctionScoreQueryBuilder(QueryBuilders.prefixQuery("text", "bro"),
- new FunctionScoreQueryBuilder.FilterFunctionBuilder[]{filterBuilder}))
- .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>"));
- }
+ SearchResponse searchResponse = client().prepareSearch()
+ .setQuery(new FunctionScoreQueryBuilder(QueryBuilders.prefixQuery("text", "bro"),
+ new FunctionScoreQueryBuilder.FilterFunctionBuilder[]{filterBuilder}))
+ .highlighter(new HighlightBuilder()
+ .field(new Field("text")))
+ .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>"));
}
public void testSynonyms() throws IOException {