Query Language
Each of these types of semantic search query language includes an example followed by a description of how the query is used.
Keywords
Java developer Amsterdam
Keywords are not case sensitive, so "Java", "JAVA", and "java" are the same.
Adding keywords to a query further limits the result set. In the example above, adding Amsterdam will return results containing Amsterdam in addition to Java and Developer. An empty query, entering no keywords, returns all.
Keywords containing special characters must be quoted as a phrase, such as "page#3".
recognizes most common keywords like C++, which does not need quotes.Phrases
"Java developer" Amsterdam
Phrases enclosed by quotes are used to match a sequence of words. Special characters are ignored inside a phrase.
Proximity
[Java developer] Amsterdam [developer C++ Java]
Query terms within [ ] match if they occur in the document in any order, possibly with one or two words in between. This is called proximity matching. Proximity matching is more flexible than phrases. For example, the above query [Java developer] also matches documents containing "java software developer" and "java enterprise software developer". Proximity queries can only contain simple keywords, but not phrases. Quoting inside proximity queries will be ignored.
Wildcard
develop*
Search + Match allows wildcard queries. If a query term ends with a trailing * it gets expanded to the most common completions. Documents containing any of the found completions will match. For example, the above query develop* will match on developer, development, developed, etc. A few restrictions apply:
- The * symbol can only be used at the end of a query term.
- The * symbol needs to be preceded by at least 2 characters.
- Wildcard terms cannot be part of phrases or proximity expressions.
Fields
Java developer city:Amsterdam experience:[Java developer] Amsterdam
If a term, phrase, or proximity expression should be matched on a certain metadata field or section of a document, the query expression needs to be preceded by the field name and a colon. The above query searches for the word Amsterdam only in the city field of the document and for java developer only in the experience section.
Weighting
developer [software engineer] #1.5 "software architect" #0.8
Terms are weighted within a query by adding a number weight behind the term. If no weight is specified, a term receives a default weight of #1.0. The weight influences the ranking of results for the weighted query expression in relation to the other expressions in the same search field. Weights can also be assigned to more complex query expressions, such as phrases, proximity conditions, or range queries. In the example above [software engineer] contributes 1.5 times as much to the result score as normal and "software architect" 0.8 times as much. Weights only influence the relative importance among query parts belonging to the same field.
developer experience:[software engineer] #1.5 "software architect" #0.8
The weight of 1.5 given to [software engineer] will be ignored in this case. Since [software engineer] is the only query expression on the experience field, there is no other query expression that the weight would relate to. Also, weights inside an OR combination are ignored.
Numeric / Date Range Conditions
Java developer experience:>2 Java developer experience:5..10 Java developer date:<2010-10-01
Numeric or date (range) conditions are expressed by "<",">","=" and "..". Dates must be of yyyy-mm-dd format. Numeric or date conditions are always assigned to a specified field.
Location Conditions
Java developer location:Amsterdam+20 Java developer location:1018+20 Java developer location:"New York"+25 location:"33.14 -12.25"+50 location:"33.14 -12.25"
Location (+radius) conditions are expressed by naming a location (city name, postal code, geo coordinates) followed by a radius in kilometers after the "+" symbol. If the radius is omitted only exact matches are returned.
No-Value Search
skills:--
It is possible to search explicitly for documents having no value indexed for a certain field. This is especially useful in OR-combination with other values to include documents having no value as well.
It is not possible to perform a no-value search on the full-text field.
Nice-to-have Expressions
"Java developer" %javascript
Nice-to-have search expressions are marked with a preceding %. Instead of limiting the result set to the searched term, they only modify the ranking of the search results. The example query above will return all Java developers, with or without javascript in their CV, but the ones that also contain javascript will be ranked higher in the results.
If a query consists solely of nice-to-have expressions, then the result set is the same as returned by the empty query: all documents are returned, ranked by the nice-to-have expressions.
Should-have Expressions
"Java developer" ^javascript
Should-have search expressions are marked with a preceding ^. Their behavior is identical to Nice-to-have Expressions except that they carry more weight when modifying the ranking.
Banned Expressions
Java developer -city:Amsterdam
Query expressions marked by a preceding - are banned expressions, they exclude all documents matching this expression from the result. It is sometimes easier to filter out documents containing a certain term than to list all positive examples.
OR Groups / Specifying Synonyms
compskills:(C C++) Amsterdam
([java developer] [software developer]) Amsterdam
Alternative search terms can be combined in an OR group by surrounding the expressions in brackets (). This is useful for specifying a list of synonyms or to allow multiple required facet items. In the example above, capturing both C and C++ in an OR group ensures that all documents contain either C or C++ as computer skills as well as containing Amsterdam. The second example shows that weights can be used within an OR group. OR groups may be used on the full text (second example) or on a specific field (first example), they may not be nested.
Field Groups
compskills:|(C C++) html| compskills:|java %jquery|
Different query parts on the same field can be grouped using pipe characters | |. This is useful to prevent repetition of a field name, but other than that the two queries compskills:java compskills:jquery and compskills:|java jquery| are equivalent. Within the pipe characters a limited subset of the query language can be used: OR groups, conditions, terms, phrases, and proximity expressions are allowed, however no field names can be used. All conditions within the field group overrule the group condition, except for the default condition. Query part weights are allowed within the field group but it is not possible to assign a weight to the field group itself.
Boolean Expressions
developer java OR .net Perl AND C++ NOT Java
The query language has a limited support for commonly used Boolean expressions. The above examples are interpreted as expected, respectively searching for a document mentioning the keywords “developer” and either “java” or “.net”, and a document mentioning the keywords “Perl” and “C++” but not the keyword “Java”.
Boolean operators are only interpreted in simple full-text queries. If the query contains any other above mentioned query syntax, such as field names or condition operators, boolean operators won't be recognized.