Query Process
Overview
The Query process is designed to perform SQL-like custom queries on the Loqate GKR. It enables searching and retrieving multiple results of specific address components that meet user-definable conditions. The query-conditions are expressed in our proprietary query-language, the syntax and semantics are described below.
Query Syntax and Semantics
A query has the following syntax:
…<(><(>QUERY-EXPRESSION <LOGICAL-OPERATOR QUERY-EXPRESSION><)> <LOGICAL-OPERATOR QUERY-EXPRESSION<)>…
The terminology used in the query syntax is described below, parenthesis may be used optionally to nest and string simple queries into compound queries:
PREFIX TAG (optional): ~ means phonetic similarity
SUFFIX TAG: % means auto-complete word, * means auto-complete phrase
The tags apply at the word level and qualify the search criteria:
QUERY-KEYWORD: <PREFIX-TAG(s)>word<SUFFIX-TAG(s)>
CONDITION-OPERATORS: LIKE (Ordered-matching), CONTAINS (Unordered-matching)
QUERY-EXPRESSION : FieldName CONDITION-OPERATOR “QUERY-KEYWORD(s)”
LOGICAL-OPERATORS: || (logical OR), && (logical AND), used to form compound queries by stringing multiple QUERY-EXPRESSIONs
Example Queries:
- Thoroughfare LIKE “Bayhill Dr” matches Bayhill Dr but does not match Dr Bayhill or Bayhill Drive
- Thoroughfare CONTAINS “Bayhill Dr” matches Bayhill Dr and Dr Bayhill but does not match Bayhill Drive
- Thoroughfare LIKE “~Payhill Dr” matches Bayhill Dr but does not match Bayhill Tr
- Thoroughfare CONTAINS “Bay% Dr” matches Dr Bayhill, Bayhill Dr and Bay Dr, but does not match Bay Drive or TromBay Dr
- Thoroughfare LIKE “Bay Dr%” matches Bay Dr and Bay Drive but does not match Bayhill Dr or Bay Drive Ct
- Thoroughfare LIKE “Bay Dr%*” matches Bay Dr, Bay Dr Ct, Bay Drive and Bay Drive Ct
- (Thoroughfare CONTAINS “Bay%”) && (Locality LIKE “San Bruno”) matches Bayhill Drive San Bruno, Bay Dr San Bruno and Bayhill Dr San Bruno
Process Options
The query tool uses the following process options:
Table (required): Reference (GKR) table to be queried
QueryString (required): String expressing the query in the query language
OutputFields (optional): Comma separated output field-names desired. Field-names are case sensitive. Reserved keyword ALL (or null) returns all field in output.
MaxResults (optional): Max number of output records desired. Defaults to 10, valid values are 1-1000.
QueryClause (optional): DISTINCT/UNIQUE/null specifies output address component-set to be distinct, unique, or unconstrained across the output record results, respectively.
AliasPreference (optional): Specify to return, for non-rangefields –
FIRST : the first alias in fields desired in the output
EXHAUSTIVE: all combinations of every alias
UNPROCESSED (null): field-value entry as stored in the GKR
RangefieldPreference (optional): Specify to return, for rangefields –
MATCH : the queried value verified in the range
RANGE : the range containing the queried value after verification
FULL : every value in the range containing the queried value
RAW(null): the range-field containing the queried value as stored in the table
Output
The results of the query are returned in the ProcessResult object.