Subversion Repositories SmartDukaan

Rev

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