[TEST] geo completions work with geo point fields
This commit is contained in:
parent
483aaca56e
commit
3d8c32008e
|
@ -562,6 +562,65 @@ public class ContextCompletionSuggestSearchIT extends ESIntegTestCase {
|
|||
assertSuggestions("foo", geoNeighbourPrefix, "suggestion9", "suggestion8", "suggestion7", "suggestion6", "suggestion5");
|
||||
}
|
||||
|
||||
public void testGeoField() throws Exception {
|
||||
|
||||
XContentBuilder mapping = jsonBuilder();
|
||||
mapping.startObject();
|
||||
mapping.startObject(TYPE);
|
||||
mapping.startObject("properties");
|
||||
mapping.startObject("pin");
|
||||
mapping.field("type", "geo_point");
|
||||
mapping.endObject();
|
||||
mapping.startObject(FIELD);
|
||||
mapping.field("type", "completion");
|
||||
mapping.field("analyzer", "simple");
|
||||
|
||||
mapping.startArray("contexts");
|
||||
mapping.startObject();
|
||||
mapping.field("name", "st");
|
||||
mapping.field("type", "geo");
|
||||
mapping.field("path", "pin");
|
||||
mapping.field("precision", 5);
|
||||
mapping.endObject();
|
||||
mapping.endArray();
|
||||
|
||||
mapping.endObject();
|
||||
mapping.endObject();
|
||||
mapping.endObject();
|
||||
mapping.endObject();
|
||||
|
||||
assertAcked(prepareCreate(INDEX).addMapping(TYPE, mapping));
|
||||
ensureYellow();
|
||||
|
||||
XContentBuilder source1 = jsonBuilder()
|
||||
.startObject()
|
||||
.latlon("pin", 52.529172, 13.407333)
|
||||
.startObject(FIELD)
|
||||
.array("input", "Hotel Amsterdam in Berlin")
|
||||
.endObject()
|
||||
.endObject();
|
||||
client().prepareIndex(INDEX, TYPE, "1").setSource(source1).execute().actionGet();
|
||||
|
||||
XContentBuilder source2 = jsonBuilder()
|
||||
.startObject()
|
||||
.latlon("pin", 52.363389, 4.888695)
|
||||
.startObject(FIELD)
|
||||
.array("input", "Hotel Berlin in Amsterdam")
|
||||
.endObject()
|
||||
.endObject();
|
||||
client().prepareIndex(INDEX, TYPE, "2").setSource(source2).execute().actionGet();
|
||||
|
||||
refresh();
|
||||
|
||||
String suggestionName = randomAsciiOfLength(10);
|
||||
CompletionSuggestionBuilder context = SuggestBuilders.completionSuggestion(suggestionName).field(FIELD).text("h").size(10)
|
||||
.geoContexts("st", GeoQueryContext.builder().setGeoPoint(new GeoPoint(52.52, 13.4)).build());
|
||||
SuggestResponse suggestResponse = client().prepareSuggest(INDEX).addSuggestion(context).get();
|
||||
|
||||
assertEquals(suggestResponse.getSuggest().size(), 1);
|
||||
assertEquals("Hotel Amsterdam in Berlin", suggestResponse.getSuggest().getSuggestion(suggestionName).iterator().next().getOptions().iterator().next().getText().string());
|
||||
}
|
||||
|
||||
public void assertSuggestions(String suggestionName, SuggestBuilder.SuggestionBuilder suggestBuilder, String... suggestions) {
|
||||
SuggestResponse suggestResponse = client().prepareSuggest(INDEX).addSuggestion(suggestBuilder
|
||||
).execute().actionGet();
|
||||
|
|
Loading…
Reference in New Issue