package io.searchbox.core;
import io.searchbox.common.AbstractIntegrationTest;
import org.elasticsearch.action.DocWriteResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.support.WriteRequest;
import org.elasticsearch.test.ESIntegTestCase;
import org.junit.Test;
import java.io.IOException;
import java.util.List;
/**
* @author cihat keser
*/
@ESIntegTestCase.ClusterScope(scope = ESIntegTestCase.Scope.SUITE, numDataNodes = 1)
public class SuggestIntegrationTest extends AbstractIntegrationTest {
private static final String INDEX = "socializr";
private static final String TYPE = "meetings";
@Test
public void testWithSingleTermSuggester() throws IOException {
String suggestionName = "my-suggestion";
assertTrue(client().index(new IndexRequest(INDEX, TYPE).source("{\"body\":\"istanbul\"}").setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE)).actionGet().getResult().equals(DocWriteResponse.Result.CREATED));
assertTrue(client().index(new IndexRequest(INDEX, TYPE).source("{\"body\":\"amsterdam\"}").setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE)).actionGet().getResult().equals(DocWriteResponse.Result.CREATED));
assertTrue(client().index(new IndexRequest(INDEX, TYPE).source("{\"body\":\"rotterdam\"}").setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE)).actionGet().getResult().equals(DocWriteResponse.Result.CREATED));
assertTrue(client().index(new IndexRequest(INDEX, TYPE).source("{\"body\":\"vienna\"}").setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE)).actionGet().getResult().equals(DocWriteResponse.Result.CREATED));
assertTrue(client().index(new IndexRequest(INDEX, TYPE).source("{\"body\":\"london\"}").setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE)).actionGet().getResult().equals(DocWriteResponse.Result.CREATED));
Suggest suggest = new Suggest.Builder("{\n" +
" \"" + suggestionName + "\" : {\n" +
" \"text\" : \"the amsterdma meetpu\",\n" +
" \"term\" : {\n" +
" \"field\" : \"body\"\n" +
" }\n" +
" }\n" +
"}").build();
SuggestResult result = client.execute(suggest);
assertTrue(result.getErrorMessage(), result.isSucceeded());
List<SuggestResult.Suggestion> suggestions = result.getSuggestions(suggestionName);
assertEquals(3, suggestions.size());
SuggestResult.Suggestion suggestion1 = suggestions.get(0);
assertEquals("the", suggestion1.text);
assertEquals(Integer.valueOf(0), suggestion1.offset);
assertEquals(Integer.valueOf(3), suggestion1.length);
assertEquals(0, suggestion1.options.size());
SuggestResult.Suggestion suggestion2 = suggestions.get(1);
assertEquals("amsterdma", suggestion2.text);
assertEquals(Integer.valueOf(4), suggestion2.offset);
assertEquals(Integer.valueOf(9), suggestion2.length);
assertEquals(1, suggestion2.options.size());
SuggestResult.Suggestion suggestion3 = suggestions.get(2);
assertEquals("meetpu", suggestion3.text);
assertEquals(Integer.valueOf(14), suggestion3.offset);
assertEquals(Integer.valueOf(6), suggestion3.length);
assertEquals(0, suggestion3.options.size());
}
}