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