Subversion Repositories SmartDukaan

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
20186 kshitij.so 1
package in.shop2020.dtrapi.controllers;
2
 
3
 
4
import java.io.IOException;
5
import java.io.InputStream;
6
import java.net.URISyntaxException;
7
import java.net.URL;
8
 
9
import org.apache.commons.io.IOUtils;
10
import org.apache.http.client.utils.URIBuilder;
11
import org.apache.log4j.Logger;
12
 
13
import com.eclipsesource.json.Json;
14
import com.eclipsesource.json.JsonArray;
15
import com.eclipsesource.json.JsonObject;
16
import com.eclipsesource.json.JsonValue;
17
 
18
 
19
 
20190 kshitij.so 20
public class AutoSuggestController extends BaseController{
20186 kshitij.so 21
	private static Logger log = Logger.getLogger(Class.class);
22
 
23
	private static final long serialVersionUID = 1L;
24
 
25
	//: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=10
26
 
27
	private String search_text;
28
 
29
	public String index() throws URISyntaxException, IOException{
30
		JsonArray outputJson = Json.array().asArray();
20187 kshitij.so 31
		URIBuilder b = new URIBuilder("http://192.168.194.109:8983/solr/collection1/select");
20186 kshitij.so 32
		b.addParameter("q", "*"+search_text.trim()+"*");
33
		b.addParameter("fl", "title,subCategoryId,category_id,category,subCategory");
34
		b.addParameter("wt", "json");
35
		b.addParameter("group", "true");
36
		b.addParameter("group.query", "category_id:3");
37
		b.addParameter("group.query", "category_id:5");
38
		b.addParameter("group.field", "subCategoryId");
39
		b.addParameter("group.limit", "10");
40
 
41
		URL url = b.build().toURL();
42
		InputStream is = url.openStream();
43
		String jsonString;
44
		try{
45
			jsonString = IOUtils.toString(is, "UTF-8");
46
		}
47
		finally{
48
			is.close();
49
		}
50
		JsonObject value = Json.parse(jsonString).asObject().get("grouped").asObject();
51
 
52
		//Lets check mobile segment
53
 
54
		int m = value.get("category_id:3").asObject().get("doclist").asObject().get("numFound").asInt();
55
 
56
		int toFetch = Math.min(m, 5);
57
 
58
		JsonArray mobile_suggestion = value.get("category_id:3").asObject().get("doclist").asObject().get("docs").asArray();
59
 
60
		int count = 0;
61
		for (JsonValue item : mobile_suggestion) {
62
			if (count == toFetch){
63
				break;
64
			}
20188 kshitij.so 65
			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());
20186 kshitij.so 66
			outputJson.add(temp);
67
			count++;
68
		}
69
 
70
		m = value.get("category_id:3").asObject().get("doclist").asObject().get("numFound").asInt();
71
 
72
		toFetch = Math.min(m, 5);
73
 
74
		JsonArray tablet_suggestion = value.get("category_id:5").asObject().get("doclist").asObject().get("docs").asArray();
75
 
76
		count = 0;
77
		for (JsonValue item : tablet_suggestion) {
78
			if (count == toFetch){
79
				break;
80
			}
20188 kshitij.so 81
			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());
20186 kshitij.so 82
			outputJson.add(temp);
83
			count++;
84
		}
85
 
86
		JsonArray subcat_suggestion = value.get("subCategoryId").asObject().get("groups").asArray();
87
		for (JsonValue itemList : subcat_suggestion) {
88
			if (itemList.asObject().get("groupValue").asInt()==0){
89
				continue;
90
			}
91
			m = itemList.asObject().get("doclist").asObject().get("numFound").asInt();
92
			toFetch = Math.min(m, 5);
93
			JsonArray suggestion = itemList.asObject().get("doclist").asObject().get("docs").asArray();
94
			count = 0;
95
			for (JsonValue item : suggestion) {
96
				if (count == toFetch){
97
					break;
98
				}
20188 kshitij.so 99
				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"));
20186 kshitij.so 100
				outputJson.add(temp);
101
				count++;
102
			}
103
 
104
		}
105
 
106
		setResultJson(outputJson.toString());
107
		return "index";
108
	}
109
 
110
 
111
	public void setSearch_text(String search_text) {
112
		this.search_text = search_text;
113
	}
114
 
115
 
116
	public String getSearch_text() {
117
		return search_text;
118
	}
119
 
120
	public static void main(String[] args) throws URISyntaxException, IOException{
121
		AutoSuggest a =  new AutoSuggest();
122
		a.setSearch_text("apple");
123
		a.index();
124
		System.out.println(a.getResultJson());
125
	}
126
 
127
}