Rev 20197 | Rev 20209 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.dtrapi.controllers;import java.io.IOException;import java.io.InputStream;import java.net.URISyntaxException;import java.net.URL;import org.apache.commons.io.IOUtils;import org.apache.http.client.utils.URIBuilder;import org.apache.log4j.Logger;import com.eclipsesource.json.Json;import com.eclipsesource.json.JsonArray;import com.eclipsesource.json.JsonObject;import com.eclipsesource.json.JsonValue;public class AutoSuggestController extends BaseController{private static Logger log = Logger.getLogger(Class.class);private static final long serialVersionUID = 1L;//:8983/solr/collection1/select?q=*apple%20iphone%205s*&fl=title,subCategoryId,category_id&wt=json&group=true&group.query=category_id:3&group.query=category_id:5&group.field=subCategoryId&group.limit=10private String search_text;public String index() throws URISyntaxException, IOException{JsonArray outputJson = Json.array().asArray();URIBuilder b = new URIBuilder("http://192.168.194.109:8983/solr/collection1/select");//suggest:(apple iphone 5s silver)b.addParameter("q", "suggest:("+search_text+")");b.addParameter("fl", "title,subCategoryId,category_id,category,subCategory");b.addParameter("wt", "json");b.addParameter("group", "true");b.addParameter("group.query", "category_id:3");b.addParameter("group.query", "category_id:5");b.addParameter("group.field", "subCategoryId");b.addParameter("group.limit", "10");URL url = b.build().toURL();System.out.println(url.toString());InputStream is = url.openStream();String jsonString;try{jsonString = IOUtils.toString(is, "UTF-8");}finally{is.close();}JsonObject value = Json.parse(jsonString).asObject().get("grouped").asObject();//Lets check mobile segmentint m = value.get("category_id:3").asObject().get("doclist").asObject().get("numFound").asInt();int toFetch = Math.min(m, 5);JsonArray mobile_suggestion = value.get("category_id:3").asObject().get("doclist").asObject().get("docs").asArray();int count = 0;for (JsonValue item : mobile_suggestion) {if (count == toFetch){break;}JsonObject temp = Json.object().add("subCategoryId",item.asObject().get("subCategoryId").asInt()).add("category_id",item.asObject().get("category_id").asInt()).add("suggestion",item.asObject().get("title").asString()).add("category_name",item.asObject().get("category").asString());outputJson.add(temp);count++;}m = value.get("category_id:5").asObject().get("doclist").asObject().get("numFound").asInt();toFetch = Math.min(m, 5);JsonArray tablet_suggestion = value.get("category_id:5").asObject().get("doclist").asObject().get("docs").asArray();count = 0;for (JsonValue item : tablet_suggestion) {if (count == toFetch){break;}JsonObject temp = Json.object().add("subCategoryId",item.asObject().get("subCategoryId").asInt()).add("category_id",item.asObject().get("category_id").asInt()).add("suggestion",item.asObject().get("title").asString()).add("category_name",item.asObject().get("category").asString());outputJson.add(temp);count++;}JsonArray subcat_suggestion = value.get("subCategoryId").asObject().get("groups").asArray();for (JsonValue itemList : subcat_suggestion) {if (itemList.asObject().get("groupValue").asInt()==0){continue;}m = itemList.asObject().get("doclist").asObject().get("numFound").asInt();toFetch = Math.min(m, 5);JsonArray suggestion = itemList.asObject().get("doclist").asObject().get("docs").asArray();count = 0;for (JsonValue item : suggestion) {if (count == toFetch){break;}JsonObject temp = Json.object().add("subCategoryId",item.asObject().get("subCategoryId").asInt()).add("category_id",item.asObject().get("category_id").asInt()).add("suggestion",item.asObject().get("title").asString()).add("category_name",item.asObject().getString("subCategory", "Accessories"));outputJson.add(temp);count++;}}setResultJson(outputJson.toString());return "index";}public void setSearch_text(String search_text) {this.search_text = search_text;}public String getSearch_text() {return search_text;}public static void main(String[] args) throws URISyntaxException, IOException{AutoSuggestController a = new AutoSuggestController();a.setSearch_text("iphone");a.index();System.out.println(a.getResultJson());}}