001
014
015 package com.liferay.portal.kernel.search;
016
017 import com.liferay.portal.kernel.util.GetterUtil;
018 import com.liferay.portal.kernel.util.LocaleUtil;
019 import com.liferay.portal.kernel.util.PropsKeys;
020 import com.liferay.portal.kernel.util.PropsUtil;
021
022 import java.io.Serializable;
023
024 import java.util.HashMap;
025 import java.util.Locale;
026 import java.util.Map;
027
028
031 public class QueryConfig implements Serializable {
032
033 public static final String LOCALE = "locale";
034
035 public static final String SEARCH_SUBFOLDERS = "search.subfolders";
036
037 public Serializable getAttribute(String name) {
038 return _attributes.get(name);
039 }
040
041 public Map<String, Serializable> getAttributes() {
042 return _attributes;
043 }
044
045 public int getCollatedSpellCheckResultScoresThreshold() {
046 return GetterUtil.getInteger(
047 _attributes.get(
048 PropsKeys.
049 INDEX_SEARCH_COLLATED_SPELL_CHECK_RESULT_SCORES_THRESHOLD),
050 _INDEX_SEARCH_COLLATED_SPELL_CHECK_RESULT_SCORES_THRESHOLD);
051 }
052
053 public int getHighlightFragmentSize() {
054 return GetterUtil.getInteger(
055 _attributes.get(PropsKeys.INDEX_SEARCH_HIGHLIGHT_FRAGMENT_SIZE),
056 _INDEX_SEARCH_HIGHLIGHT_FRAGMENT_SIZE);
057 }
058
059 public int getHighlightSnippetSize() {
060 return GetterUtil.getInteger(
061 _attributes.get(PropsKeys.INDEX_SEARCH_HIGHLIGHT_SNIPPET_SIZE),
062 _INDEX_SEARCH_HIGHLIGHT_SNIPPET_SIZE);
063 }
064
065 public Locale getLocale() {
066 Locale locale = (Locale)_attributes.get(LOCALE);
067
068 if (locale == null) {
069 locale = LocaleUtil.getMostRelevantLocale();
070 }
071
072 return locale;
073 }
074
075 public int getQueryIndexingThreshold() {
076 return GetterUtil.getInteger(
077 _attributes.get(
078 PropsKeys.INDEX_SEARCH_QUERY_INDEXING_THRESHOLD),
079 _INDEX_SEARCH_QUERY_INDEXING_THRESHOLD);
080 }
081
082 public int getQuerySuggestionMax() {
083 return GetterUtil.getInteger(
084 _attributes.get(
085 PropsKeys.INDEX_SEARCH_QUERY_SUGGESTION_MAX),
086 _INDEX_SEARCH_QUERY_SUGGESTION_MAX);
087 }
088
089 public int getQuerySuggestionScoresThreshold() {
090 return GetterUtil.getInteger(
091 _attributes.get(
092 PropsKeys.INDEX_SEARCH_QUERY_SUGGESTION_SCORES_THRESHOLD),
093 _INDEX_SEARCH_QUERY_SUGGESTION_SCORES_THRESHOLD);
094 }
095
096 public boolean isCollatedSpellCheckResultEnabled() {
097 return GetterUtil.getBoolean(
098 _attributes.get(
099 PropsKeys.INDEX_SEARCH_COLLATED_SPELL_CHECK_RESULT_ENABLED),
100 _INDEX_SEARCH_COLLATED_SPELL_CHECK_RESULT_ENABLED);
101 }
102
103 public boolean isHighlightEnabled() {
104 return GetterUtil.getBoolean(
105 _attributes.get(PropsKeys.INDEX_SEARCH_HIGHLIGHT_ENABLED), false);
106 }
107
108 public boolean isHitsProcessingEnabled() {
109 return GetterUtil.getBoolean(
110 _attributes.get(_HITS_PROCESSING_ENABLED), true);
111 }
112
113 public boolean isQueryIndexingEnabled() {
114 return GetterUtil.getBoolean(
115 _attributes.get(
116 PropsKeys.INDEX_SEARCH_QUERY_INDEXING_ENABLED),
117 _INDEX_SEARCH_QUERY_INDEXING_ENABLED);
118 }
119
120 public boolean isQuerySuggestionEnabled() {
121 return GetterUtil.getBoolean(
122 _attributes.get(PropsKeys.INDEX_SEARCH_QUERY_SUGGESTION_ENABLED),
123 _INDEX_SEARCH_QUERY_SUGGESTION_ENABLED);
124 }
125
126 public boolean isScoreEnabled() {
127 return GetterUtil.getBoolean(
128 _attributes.get(PropsKeys.INDEX_SEARCH_SCORING_ENABLED),
129 _INDEX_SEARCH_SCORING_ENABLED);
130 }
131
132 public boolean isSearchSubfolders() {
133 return GetterUtil.getBoolean(_attributes.get(SEARCH_SUBFOLDERS));
134 }
135
136 public Serializable removeAttribute(String name) {
137 return _attributes.remove(name);
138 }
139
140 public void setAttribute(String name, Serializable value) {
141 _attributes.put(name, value);
142 }
143
144 public void setCollatedSpellCheckResultEnabled(
145 boolean collatedSpellCheckResultEnabled) {
146
147 _attributes.put(
148 PropsKeys.INDEX_SEARCH_COLLATED_SPELL_CHECK_RESULT_ENABLED,
149 collatedSpellCheckResultEnabled);
150 }
151
152 public void setCollatedSpellCheckResultScoresThreshold(
153 int collatedSpellCheckResultScoresThreshold) {
154
155 _attributes.put(
156 PropsKeys.
157 INDEX_SEARCH_COLLATED_SPELL_CHECK_RESULT_SCORES_THRESHOLD,
158 collatedSpellCheckResultScoresThreshold);
159 }
160
161 public void setHighlightEnabled(boolean highlightEnabled) {
162 if (_INDEX_SEARCH_HIGHLIGHT_ENABLED) {
163 _attributes.put(
164 PropsKeys.INDEX_SEARCH_HIGHLIGHT_ENABLED, highlightEnabled);
165 }
166 else {
167 _attributes.put(PropsKeys.INDEX_SEARCH_HIGHLIGHT_ENABLED, false);
168 }
169 }
170
171 public void setHighlightFragmentSize(int highlightFragmentSize) {
172 _attributes.put(
173 PropsKeys.INDEX_SEARCH_HIGHLIGHT_FRAGMENT_SIZE,
174 highlightFragmentSize);
175 }
176
177 public void setHighlightSnippetSize(int highlightSnippetSize) {
178 _attributes.put(
179 PropsKeys.INDEX_SEARCH_HIGHLIGHT_SNIPPET_SIZE,
180 highlightSnippetSize);
181 }
182
183 public void setHitsProcessingEnabled(boolean hitsProcessingEnabled) {
184 _attributes.put(_HITS_PROCESSING_ENABLED, hitsProcessingEnabled);
185 }
186
187 public void setLocale(Locale locale) {
188 _attributes.put(LOCALE, locale);
189 }
190
191 public void setQueryIndexingEnabled(boolean enabled) {
192 _attributes.put(PropsKeys.INDEX_SEARCH_QUERY_INDEXING_ENABLED, enabled);
193 }
194
195 public void setQueryIndexingThreshold(int queryIndexingThreshold) {
196 _attributes.put(
197 PropsKeys.INDEX_SEARCH_QUERY_INDEXING_THRESHOLD,
198 queryIndexingThreshold);
199 }
200
201 public void setQuerySuggestionEnabled(boolean querySuggestionEnabled) {
202 _attributes.put(
203 PropsKeys.INDEX_SEARCH_QUERY_SUGGESTION_ENABLED,
204 querySuggestionEnabled);
205 }
206
207 public void setQuerySuggestionScoresThreshold(
208 int querySuggestionScoresThreshold) {
209 _attributes.put(
210 PropsKeys.INDEX_SEARCH_QUERY_SUGGESTION_SCORES_THRESHOLD,
211 querySuggestionScoresThreshold);
212 }
213
214 public void setQuerySuggestionsMax(int querySuggestionMax) {
215 _attributes.put(
216 PropsKeys.INDEX_SEARCH_QUERY_SUGGESTION_MAX, querySuggestionMax);
217 }
218
219 public void setScoreEnabled(boolean scoreEnabled) {
220 _attributes.put(PropsKeys.INDEX_SEARCH_SCORING_ENABLED, scoreEnabled);
221 }
222
223 public void setSearchSubfolders(boolean searchSubfolders) {
224 _attributes.put(SEARCH_SUBFOLDERS, searchSubfolders);
225 }
226
227 private static final String _HITS_PROCESSING_ENABLED =
228 "hitsProcessingEnabled";
229
230 private static final boolean
231 _INDEX_SEARCH_COLLATED_SPELL_CHECK_RESULT_ENABLED =
232 GetterUtil.getBoolean(
233 PropsUtil.get(
234 PropsKeys.INDEX_SEARCH_COLLATED_SPELL_CHECK_RESULT_ENABLED),
235 true);
236
237 private static final int
238 _INDEX_SEARCH_COLLATED_SPELL_CHECK_RESULT_SCORES_THRESHOLD =
239 GetterUtil.getInteger(
240 PropsUtil.get(
241 PropsKeys.
242 INDEX_SEARCH_COLLATED_SPELL_CHECK_RESULT_SCORES_THRESHOLD),
243 50);
244
245 private static final boolean _INDEX_SEARCH_HIGHLIGHT_ENABLED =
246 GetterUtil.getBoolean(
247 PropsUtil.get(PropsKeys.INDEX_SEARCH_HIGHLIGHT_ENABLED));
248
249 private static final int _INDEX_SEARCH_HIGHLIGHT_FRAGMENT_SIZE =
250 GetterUtil.getInteger(
251 PropsUtil.get(PropsKeys.INDEX_SEARCH_HIGHLIGHT_FRAGMENT_SIZE));
252
253 private static final int _INDEX_SEARCH_HIGHLIGHT_SNIPPET_SIZE =
254 GetterUtil.getInteger(
255 PropsUtil.get(PropsKeys.INDEX_SEARCH_HIGHLIGHT_SNIPPET_SIZE));
256
257 private static final boolean _INDEX_SEARCH_QUERY_INDEXING_ENABLED =
258 GetterUtil.getBoolean(
259 PropsUtil.get(PropsKeys.INDEX_SEARCH_QUERY_INDEXING_ENABLED), true);
260
261 private static final int _INDEX_SEARCH_QUERY_INDEXING_THRESHOLD =
262 GetterUtil.getInteger(
263 PropsUtil.get(
264 PropsKeys.INDEX_SEARCH_QUERY_INDEXING_THRESHOLD),
265 50);
266
267 private static final boolean _INDEX_SEARCH_QUERY_SUGGESTION_ENABLED =
268 GetterUtil.getBoolean(
269 PropsUtil.get(PropsKeys.INDEX_SEARCH_QUERY_SUGGESTION_ENABLED),
270 true);
271
272 private static final int _INDEX_SEARCH_QUERY_SUGGESTION_MAX =
273 GetterUtil.getInteger(
274 PropsUtil.get(PropsKeys.INDEX_SEARCH_QUERY_SUGGESTION_MAX), 5);
275
276 private static final int
277 _INDEX_SEARCH_QUERY_SUGGESTION_SCORES_THRESHOLD = GetterUtil.getInteger(
278 PropsUtil.get(
279 PropsKeys.INDEX_SEARCH_QUERY_SUGGESTION_SCORES_THRESHOLD), 50);
280
281 private static final boolean _INDEX_SEARCH_SCORING_ENABLED =
282 GetterUtil.getBoolean(
283 PropsUtil.get(PropsKeys.INDEX_SEARCH_SCORING_ENABLED));
284
285 private Map<String, Serializable> _attributes =
286 new HashMap<String, Serializable>();
287
288 }