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