|
@@ -25,6 +25,7 @@ import org.elasticsearch.common.io.stream.StreamOutput;
|
|
|
import org.elasticsearch.common.io.stream.Streamable;
|
|
|
import org.elasticsearch.common.xcontent.ToXContent;
|
|
|
import org.elasticsearch.common.xcontent.XContentBuilder;
|
|
|
+import org.elasticsearch.common.xcontent.XContentBuilderString;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.util.ArrayList;
|
|
@@ -119,37 +120,17 @@ public class AnalyzeResponse extends ActionResponse implements Iterable<AnalyzeR
|
|
|
|
|
|
@Override
|
|
|
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
|
|
|
- String format = params.param("format", "detailed");
|
|
|
- if ("detailed".equals(format)) {
|
|
|
- builder.startArray("tokens");
|
|
|
- for (AnalyzeToken token : tokens) {
|
|
|
- builder.startObject();
|
|
|
- builder.field("token", token.getTerm());
|
|
|
- builder.field("start_offset", token.getStartOffset());
|
|
|
- builder.field("end_offset", token.getEndOffset());
|
|
|
- builder.field("type", token.getType());
|
|
|
- builder.field("position", token.getPosition());
|
|
|
- builder.endObject();
|
|
|
- }
|
|
|
- builder.endArray();
|
|
|
- } else if ("text".equals(format)) {
|
|
|
- StringBuilder sb = new StringBuilder();
|
|
|
- int lastPosition = 0;
|
|
|
- for (AnalyzeToken token : tokens) {
|
|
|
- if (lastPosition != token.getPosition()) {
|
|
|
- if (lastPosition != 0) {
|
|
|
- sb.append("\n").append(token.getPosition()).append(": \n");
|
|
|
- }
|
|
|
- lastPosition = token.getPosition();
|
|
|
- }
|
|
|
- sb.append('[')
|
|
|
- .append(token.getTerm()).append(":")
|
|
|
- .append(token.getStartOffset()).append("->").append(token.getEndOffset()).append(":")
|
|
|
- .append(token.getType())
|
|
|
- .append("]\n");
|
|
|
- }
|
|
|
- builder.field("tokens", sb);
|
|
|
+ builder.startArray(Fields.TOKENS);
|
|
|
+ for (AnalyzeToken token : tokens) {
|
|
|
+ builder.startObject();
|
|
|
+ builder.field(Fields.TOKEN, token.getTerm());
|
|
|
+ builder.field(Fields.START_OFFSET, token.getStartOffset());
|
|
|
+ builder.field(Fields.END_OFFSET, token.getEndOffset());
|
|
|
+ builder.field(Fields.TYPE, token.getType());
|
|
|
+ builder.field(Fields.POSITION, token.getPosition());
|
|
|
+ builder.endObject();
|
|
|
}
|
|
|
+ builder.endArray();
|
|
|
return builder;
|
|
|
}
|
|
|
|
|
@@ -171,4 +152,13 @@ public class AnalyzeResponse extends ActionResponse implements Iterable<AnalyzeR
|
|
|
token.writeTo(out);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ static final class Fields {
|
|
|
+ static final XContentBuilderString TOKENS = new XContentBuilderString("tokens");
|
|
|
+ static final XContentBuilderString TOKEN = new XContentBuilderString("token");
|
|
|
+ static final XContentBuilderString START_OFFSET = new XContentBuilderString("start_offset");
|
|
|
+ static final XContentBuilderString END_OFFSET = new XContentBuilderString("end_offset");
|
|
|
+ static final XContentBuilderString TYPE = new XContentBuilderString("type");
|
|
|
+ static final XContentBuilderString POSITION = new XContentBuilderString("position");
|
|
|
+ }
|
|
|
}
|