Skip to content

Commit a9c9bfa

Browse files
author
Blair McKenzie
committed
default rawQuery to simple query parser
1 parent 14ba187 commit a9c9bfa

File tree

2 files changed

+71
-28
lines changed

2 files changed

+71
-28
lines changed

packages/lib/cloudsearch.cfc

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ component {
370370
};
371371
}
372372

373-
public struct function search(string domain, string typename, string rawQuery, string rawFilter, array conditions, array filters, numeric maxrows=10, boolean log=true) {
373+
public struct function search(string domain, string typename, string rawQuery, string queryParser="simple", string rawFilter, array conditions, array filters, numeric maxrows=10, boolean log=true) {
374374
var csdClient = "";
375375
var searchRequest = createobject("java","com.amazonaws.services.cloudsearchdomain.model.SearchRequest").init();
376376
var searchResponse = {};
@@ -387,6 +387,7 @@ component {
387387
var prop = "";
388388
var op = "";
389389
var stResult = {};
390+
var st = {};
390391

391392
if (arguments.log){
392393
arguments.log = false;
@@ -420,7 +421,9 @@ component {
420421
stIndexFields = getTypeIndexFields();
421422
}
422423

423-
arguments.rawQuery = getSearchQueryFromArray(stIndexFields=stIndexFields, conditions=arguments.conditions, bBoost=true);
424+
st = getSearchQueryFromArray(stIndexFields=stIndexFields, conditions=arguments.conditions, bBoost=true);
425+
arguments.rawQuery = st.query;
426+
arguments.queryParser = st.parser;
424427

425428
if (arraylen(arguments.conditions) gt 1){
426429
arguments.rawQuery = "(and " & chr(10) & arguments.rawQuery & chr(10) & ")";
@@ -459,7 +462,7 @@ component {
459462
}
460463
}
461464

462-
searchRequest.setQueryParser("structured");
465+
searchRequest.setQueryParser(arguments.queryParser);
463466
searchRequest.setQuery(arguments.rawQuery);
464467
if (structKeyExists(arguments,"rawFilter") and len(arguments.rawFilter)){
465468
searchRequest.setFilterQuery(arguments.rawFilter);
@@ -483,6 +486,7 @@ component {
483486
stResult["conditions"] = arguments.conditions;
484487
}
485488
stResult["rawQuery"] = arguments.rawQuery;
489+
stResult["queryParser"] = arguments.queryParser;
486490
if (structKeyExists(arguments,"filters")){
487491
stResult["filters"] = arguments.filters;
488492
}
@@ -734,7 +738,10 @@ component {
734738
}
735739
}
736740

737-
return arrayToList(arrOut, chr(10));
741+
return {
742+
"query" = arrayToList(arrOut, chr(10)),
743+
"parser" = "structured"
744+
};
738745
}
739746

740747
private string function getTextValue(required string text){

webskin/configCloudSearch/webtopBodySearch.cfm

Lines changed: 60 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
<cfparam name="form.text" default="" />
99
<cfparam name="form.conditions" default="" />
1010
<cfparam name="form.filters" default="" />
11-
<cfparam name="form.rawQuery" default="" />
11+
<cfparam name="form.rawQuery" default="simple" />
12+
<cfparam name="form.queryParser" default="" />
1213
<cfparam name="form.rawFilter" default="" />
1314

1415
<skin:loadJS id="fc-jquery" />
@@ -54,13 +55,14 @@
5455
<cfset stArgs["typename"] = form.searchtype />
5556
</cfif>
5657
<cfif len(form.text)>
57-
<cfset stArgs["conditions"] = [{ "text"=form.text }] />
58+
<cfset stArgs.rawQuery = form.text />
5859
</cfif>
5960
<cfset stSearch = application.fc.lib.cloudsearch.search(argumentCollection=stArgs) />
6061
<cfif structKeyExists(stSearch,"conditions")>
6162
<cfset form.conditions = application.fapi.formatJSON(serializeJSON(stSearch.conditions)) />
6263
</cfif>
6364
<cfset form.rawQuery = stSearch.rawQuery />
65+
<cfset form.queryParser = stSearch.queryParser />
6466
<cfif structKeyExists(stSearch,"filters")>
6567
<cfset form.filters = application.fapi.formatJSON(serializeJSON(stSearch.filters)) />
6668
</cfif>
@@ -82,6 +84,7 @@
8284
<cfset form.conditions = application.fapi.formatJSON(serializeJSON(stSearch.conditions)) />
8385
</cfif>
8486
<cfset form.rawQuery = stSearch.rawQuery />
87+
<cfset form.queryParser = stSearch.queryParser />
8588
<cfif structKeyExists(stSearch,"filters")>
8689
<cfset form.filters = application.fapi.formatJSON(serializeJSON(stSearch.filters)) />
8790
</cfif>
@@ -97,6 +100,7 @@
97100
<cfset form.text = "" />
98101
<cfset form.conditions = application.fapi.formatJSON(serializeJSON(stSearch.conditions)) />
99102
<cfset form.rawQuery = stSearch.rawQuery />
103+
<cfset form.queryParser = stSearch.queryParser />
100104
<cfset form.filters = application.fapi.formatJSON(serializeJSON(stSearch.filters)) />
101105
<cfset form.rawFilter = stSearch.rawFilter />
102106
<cfset form.history = 1 />
@@ -108,11 +112,12 @@
108112
</ft:processform>
109113

110114
<ft:processform action="Search Raw">
111-
<cfset stSearch = application.fc.lib.cloudsearch.search(rawQuery=form.rawQuery,rawFilter=form.rawFilter) />
115+
<cfset stSearch = application.fc.lib.cloudsearch.search(rawQuery=form.rawQuery, queryParser=form.queryParser, rawFilter=form.rawFilter) />
112116
<cfset form.searchtype = "" />
113117
<cfset form.text = "" />
114118
<cfset form.conditions = "" />
115119
<cfset form.rawQuery = stSearch.rawQuery />
120+
<cfset form.queryParser = stSearch.queryParser />
116121
<cfset form.filters = "" />
117122
<cfset form.rawFilter = stSearch.rawFilter />
118123
<cfset form.history = 1 />
@@ -183,6 +188,11 @@
183188
<br>
184189
</cfif>
185190

191+
<cfif structKeyExists(searchLog.args,"queryParser")>
192+
<strong>Query Parser</strong>: <code>#searchLog.args.queryParser#</code>
193+
<br>
194+
</cfif>
195+
186196
<cfif structKeyExists(searchLog.args,"conditions")>
187197
<strong>Conditions</strong>: <code class="formatjson">#serializeJSON(searchLog.args.conditions)#</code>
188198
<br>
@@ -211,30 +221,46 @@
211221
</div>
212222

213223
<div id="search-conditions" class="<cfif queryTab eq 'conditions'>active</cfif> tab-pane">
214-
<textarea id="conditions-search" name="conditions" class="span12" rows="5">#form.conditions#</textarea>
215-
<script>
216-
window.conditionsCodeMirror = CodeMirror.fromTextArea(document.getElementById("conditions-search",{"mode":"json"}));
217-
$j("a[href='##search-conditions']").on("shown",function(){
218-
window.conditionsCodeMirror.refresh();
219-
});
220-
</script>
221-
222-
<textarea id="filters-search" name="filters" class="span12" rows="5">#form.filters#</textarea>
223-
<script>
224-
window.filtersCodeMirror = CodeMirror.fromTextArea(document.getElementById("filters-search",{"mode":"json"}));
225-
$j("a[href='##search-filters']").on("shown",function(){
226-
window.filtersCodeMirror.refresh();
227-
});
228-
</script>
224+
<ft:field label="Query Parser">structured</ft:field>
225+
<ft:field label="Conditions">
226+
<textarea id="conditions-search" name="conditions" class="span12" rows="5">#form.conditions#</textarea>
227+
<script>
228+
window.conditionsCodeMirror = CodeMirror.fromTextArea(document.getElementById("conditions-search",{"mode":"json"}));
229+
$j("a[href='##search-conditions']").on("shown",function(){
230+
window.conditionsCodeMirror.refresh();
231+
});
232+
</script>
233+
</ft:field>
234+
<ft:field label="Filters">
235+
<textarea id="filters-search" name="filters" class="span12" rows="5">#form.filters#</textarea>
236+
<script>
237+
window.filtersCodeMirror = CodeMirror.fromTextArea(document.getElementById("filters-search",{"mode":"json"}));
238+
$j("a[href='##search-filters']").on("shown",function(){
239+
window.filtersCodeMirror.refresh();
240+
});
241+
</script>
242+
</ft:field>
229243

230244
<ft:buttonPanel>
231245
<ft:button value="Search Conditions" text="Search" />
232246
</ft:buttonPanel>
233247
</div>
234248

235249
<div id="search-raw" class="<cfif queryTab eq 'raw'>active</cfif> tab-pane">
236-
<textarea id="raw-search-conditions" name="rawQuery" class="span12" rows="5">#form.rawQuery#</textarea>
237-
<textarea id="raw-search-filters" name="rawFilter" class="span12" rows="5">#form.rawFilter#</textarea>
250+
<ft:field label="Query Parser">
251+
<select id="raw-search-parser" name="queryParser" class="span12">
252+
<option>simple</option>
253+
<option>structured</option>
254+
<option>lucene</option>
255+
<option>dismax</option>
256+
</select>
257+
</ft:field>
258+
<ft:field label="Query">
259+
<textarea id="raw-search-conditions" name="rawQuery" class="span12" rows="5">#form.rawQuery#</textarea>
260+
</ft:field>
261+
<ft:field label="Filter">
262+
<textarea id="raw-search-filters" name="rawFilter" class="span12" rows="5">#form.rawFilter#</textarea>
263+
</ft:field>
238264

239265
<ft:buttonPanel>
240266
<ft:button value="Search Raw" text="Search" />
@@ -269,14 +295,24 @@
269295
<div class="tab-content">
270296
<cfif structKeyExists(stSearch,"conditions")>
271297
<div id="results-conditions" class="tab-pane">
272-
<pre class="formatjson">#stSearch.jsonConditions#</pre>
273-
<pre class="formatjson">#stSearch.jsonFilters#</pre>
298+
<ft:field label="Query Parser">#stSearch.queryParser#</ft:field>
299+
<ft:field label="Conditions">
300+
<pre class="formatjson">#stSearch.jsonConditions#</pre>
301+
</ft:field>
302+
<ft:field label="Filter">
303+
<pre class="formatjson">#stSearch.jsonFilters#</pre>
304+
</ft:field>
274305
</div>
275306
</cfif>
276307

277308
<div id="results-raw" class="tab-pane">
278-
<pre>#stSearch.rawQuery#</pre>
279-
<pre>#stSearch.rawFilter#</pre>
309+
<ft:field label="Query Parser">#stSearch.queryParser#</ft:field>
310+
<ft:field label="Raw Query">
311+
<pre>#stSearch.rawQuery#</pre>
312+
</ft:field>
313+
<ft:field label="Raw Filter">
314+
<pre>#stSearch.rawFilter#</pre>
315+
</ft:field>
280316
</div>
281317

282318
<div id="results-items" class="tab-pane active">

0 commit comments

Comments
 (0)