Subversion Repositories SmartDukaan

Rev

Rev 20232 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
20210 kshitij.so 1
package in.shop2020.dtrapi.services;
2
 
3
import in.shop2020.config.ConfigException;
4
import in.shop2020.thrift.clients.config.ConfigClient;
5
 
6
import java.io.IOException;
7
import java.io.InputStream;
8
import java.net.URISyntaxException;
9
import java.net.URL;
10
 
11
import org.apache.commons.io.IOUtils;
12
import org.apache.http.client.utils.URIBuilder;
13
import org.apache.log4j.Logger;
14
 
15
 
16
 
17
public class SolrService{
18
 
19
	private static String SOLR_URL;
20230 kshitij.so 20
	private static final String limit ="20";
20260 kshitij.so 21
	private static final String groupLimit = "10";
20230 kshitij.so 22
	private static final String autoSuggestField = "title,subCategoryId,category_id,category,subCategory,score";
23
	private static final String searchResultsField = "fl,title,skuBundleId,id,thumbnail";
24
	private static final String outputFormat = "json";
20210 kshitij.so 25
	private static Logger log = Logger.getLogger(Class.class);
26
 
27
	static{
20227 kshitij.so 28
		synchronized(SolrService.class){
29
			try {
30
				SOLR_URL = ConfigClient.getClient().get("dtr_solr_url");
31
			} catch (ConfigException e) {
32
				log.error("Error while gettting dtr_solr_url param from config service", e);
33
				SOLR_URL = "http://localhost:8983/solr/collection1/select";
34
			}
20210 kshitij.so 35
		}
36
	}
37
 
20227 kshitij.so 38
	public String getSuggestions(String search_text) throws URISyntaxException, IOException{
20230 kshitij.so 39
		URIBuilder autoSuggestUrl = new URIBuilder(SOLR_URL);
40
		autoSuggestUrl.addParameter("fl", autoSuggestField);                  //Fields to choose
41
		autoSuggestUrl.addParameter("wt", outputFormat); 					  //Output format
20260 kshitij.so 42
		autoSuggestUrl.addParameter("group", "true"); 				  //group data
43
		autoSuggestUrl.addParameter("group.query", "category_id:3");  //group by category
44
		autoSuggestUrl.addParameter("group.query", "category_id:5");  //group by category
45
		autoSuggestUrl.addParameter("group.field", "subCategoryId");  //group by subCategory
46
		autoSuggestUrl.addParameter("group.limit", groupLimit);
20230 kshitij.so 47
		autoSuggestUrl.addParameter("q", "suggest:("+search_text+")");
20227 kshitij.so 48
		URL url = autoSuggestUrl.build().toURL();
20230 kshitij.so 49
		log.info("Search Url Autosuggest"+url.toString());
20260 kshitij.so 50
 
20227 kshitij.so 51
		InputStream is = url.openStream();
52
		String jsonString;
53
		try{
54
			jsonString = IOUtils.toString(is, "UTF-8");
55
		}
56
		finally{
57
			is.close();
58
		}
59
		return jsonString; 
60
	}
61
 
62
	public String getSearchResults(String search_text, String offset) throws URISyntaxException, IOException{
20230 kshitij.so 63
		URIBuilder generalSearchUrl = new URIBuilder(SOLR_URL);
64
		generalSearchUrl.addParameter("q", search_text);
20232 kshitij.so 65
		generalSearchUrl.addParameter("fl", searchResultsField);                  //Fields to choose
20230 kshitij.so 66
		generalSearchUrl.addParameter("wt", outputFormat); 					  //Output format
67
		generalSearchUrl.addParameter("rows", limit);             			  //limit
20219 kshitij.so 68
		if (offset!=null && !offset.isEmpty()){
20227 kshitij.so 69
			generalSearchUrl.setParameter("start", offset);
20219 kshitij.so 70
		}
20227 kshitij.so 71
		URL url = generalSearchUrl.build().toURL();
20230 kshitij.so 72
		log.info("Search Url Search Results"+url.toString());
20210 kshitij.so 73
		InputStream is = url.openStream();
74
		String jsonString;
75
		try{
76
			jsonString = IOUtils.toString(is, "UTF-8");
77
		}
78
		finally{
79
			is.close();
80
		}
81
		return jsonString; 
82
	}
83
 
84
}