1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.fatwire.gst.foundation.facade.search;
18
19 import java.util.Arrays;
20 import java.util.List;
21
22 import COM.FutureTense.Interfaces.ICS;
23 import COM.FutureTense.Util.ftErrors;
24
25 import com.fatwire.cs.core.search.data.ResultRow;
26 import com.fatwire.cs.core.search.engine.SearchEngine;
27 import com.fatwire.cs.core.search.engine.SearchEngineConfig;
28 import com.fatwire.cs.core.search.engine.SearchEngineException;
29 import com.fatwire.cs.core.search.engine.SearchResult;
30 import com.fatwire.cs.core.search.query.Operation;
31 import com.fatwire.cs.core.search.query.QueryExpression;
32 import com.fatwire.gst.foundation.CSRuntimeException;
33 import com.fatwire.gst.foundation.facade.ics.ICSFactory;
34 import com.fatwire.search.util.SearchUtils;
35
36
37
38
39
40
41
42 public class SimpleSearchEngine {
43
44 private final SearchEngine searchEngine;
45 private final SearchEngineConfig seConfig;
46
47 public SimpleSearchEngine(String engineName) {
48 try {
49 seConfig = SearchUtils.getSearchEngineConfig();
50 } catch (SearchEngineException e) {
51 throw new CSRuntimeException("Could not get search engine config", ftErrors.exceptionerr, e);
52 }
53 searchEngine = seConfig.getEngine(engineName);
54 }
55
56
57
58
59
60
61
62
63 public static SimpleSearchEngine getInstance(String engineName) {
64 ICS ics = ICSFactory.getOrCreateICS();
65 SimpleSearchEngine sse = (SimpleSearchEngine) ics.GetObj(SimpleSearchEngine.class.getName());
66 if (sse == null) {
67 sse = new SimpleSearchEngine(engineName);
68 ics.SetObj(SimpleSearchEngine.class.getName(), sse);
69 }
70 return sse;
71 }
72
73 public SearchResultIterable search(QueryExpression query, List<String> indexNames) {
74 SearchResult<ResultRow> sr;
75 try {
76 sr = searchEngine.search(indexNames, query);
77 } catch (SearchEngineException e) {
78 throw new CSRuntimeException("Search failed with an exception. Index: " + indexNames + ", Query: " + query, ftErrors.exceptionerr, e);
79 }
80 return new SearchResultIterable(sr);
81 }
82
83
84
85
86
87
88 public SearchResultIterable search(QueryExpression query, String... indexNames) {
89 return search(query, Arrays.asList(indexNames));
90 }
91
92
93
94
95
96
97
98 public QueryExpression newQuery(String stringValue) {
99 return SearchUtils.newQuery(stringValue);
100 }
101
102
103
104
105
106
107
108 public QueryExpression newQuery(String fieldName, Operation op, Object... values) {
109 return SearchUtils.newQuery(fieldName, op, Arrays.asList(values));
110 }
111
112 }