Excerpt |
---|
The Squirro Query Syntax can be used to perform structured and refined searches. |
Table of Contents
Table of Contents | ||||||
---|---|---|---|---|---|---|
|
Introduction
Per default, the title
and body
fields are taken into account when searching. Dynamically tagged text labels
can also be configured to be searchable.
A sequence of query terms is evaluated according to the project configuration, per default longer queries are less strictly matched than shorter queries (minimum should match conditions).
Boolean Operators
Use AND, OR, NOT, + (plus sign) or - (minus sign) to explicitly combine terms. Be aware that the operators need to be in all capital letters.
The following restrictions apply:
The + or required operator requires that the term after the + symbol exist somewhere.
The - or prohibit operator excludes documents that contain the term after the - symbol.
Example Queries
...
Query
...
Description
...
squirro AND memonic
...
Search documents that contain squirro and memonic.
...
squirro OR memonic
...
Search documents that contain either squirro or memonic.
...
+memonic -squirro
...
Search documents that contain memonic but do not contain squirro.
...
squirro NOT memonic
...
Search documents that contain squirro but do not contain memonic.
Grouping
Use round brackets / parentheses for grouping.
Example Queries
...
Query
...
Description
...
(java AND solr) OR (python AND elasticsearch)
...
Search documents that contain both java and solar, or documents that contain both python and elasticsearch.
...
nektoon AND (squirro OR memonic)
...
Search documents that contain nektoon and either squirro or memonic.
Phrase Search
Use double quotes at the beginning and ending of a phrase to perform a phrase search. Phrase search is useful to make the search results more precise by making sure that terms have to be found within close distance (per default the distance is set to 5 terms).
You can also add a slop to the phrase with a tilde ~
to manually specify the allowed distance between terms.
Example Queries
...
Query
...
Description
...
"oracle financial services"~1
...
Find documents where oracle, financial and services match in exact this order and within three terms.
...
"oracle financial leasing"~3
...
Find documents where oracle, financial and leasing must match but allow for up to 3 additional terms between them. The order of the terms is no longer strict, but swapping two words is equivalent to adding two words in terms of edit distance.
...
"oracle financial services"
...
Find documents where oracle, financial and services are found within the configured default phrase_slop
distance. See project's query strategy configuration (topic.search.query-strategy::phrase.phrase_slop
)
Wildcard Search
Find documents that contain terms matching a wildcard pattern. Wildcard term matching is applied on title, body and searchable Labels.
Two wildcard operators are supported:
*
, which matches zero or more characters?
, which matches any single character
Note |
---|
Avoid using wildcard queries with leading |
Example Queries
...
Query
...
Description
...
squirr*
...
Search documents that contain e.g. for squirro and squirrel.
...
*emonic
...
Search documents that contain e.g. for memonic and mnemonic.
...
te?t
...
Search documents that contain e.g. for test and text.
...
name:*
...
Search documents that have e.g. the field "name" 1
...
-name:*
...
Search documents that do not have e.g. the field "name" 1
...
name:squir*
...
Search documents that contain the "name" field started by "squir", e.g. name:squirro and name:squirrel. 1
1 Note that facet names containing spaces need to be put inside quotes in queries
Field Search
Only search in specific fields
...
Query
...
Description
...
$title:France
...
Search documents that have the term France in the title
...
$body:France
...
Search documents that have the term France in the document body
...
$item_id:PgnAQM1FTSCP1uNOesoE7Q
...
Search for a specific document by id
...
$item_created_at >= "2015-02-01T00:00:00"
...
Search documents created after Feb. 2, 2015
...
$item_created_at <= "2015-02-01T00:00:00"
...
Search documents created before Feb. 2, 2015
...
$item_created_at >= "now-7d/d"
...
Search documents created in the last 7 days
(see Elasticsearch documentation)
...
$_size > 100000
...
Search documents with size > 100'000 bytes
Facet Search
Use any document facet to restrict the search.
...
Query
...
Description
...
Country:France
...
Search documents that have a facet named Country with a value France
...
Country:"United Kingdom"
...
Search documents that have a facet named Country with a value United Kingdom
...
"Mixed Sentiment":Yes 1
...
Search documents that have a facet named Mixed Sentiment with a value Yes
1 Note that facet names containing spaces need to be put inside quotes in queries
Note: this search is case sensitive
Boosting
Individual elements of a query can be prioritized by boosting them. Note that sorting needs to be by relevance to notice the changed relevance scores.
...
Query
...
Description
...
France^10 Europe
...
Search for France and Europe, but boost matches of “France”.
...
France OR Country:France^10
...
Search for France in full text, as well as the “Country” facet and boost items that have the value defined in the country facet.
...
France^0.1 Europe
...
Search for France and Europe, but de-prioritize matches of “France” (the default boost is 1.0).
Sorting
You can use the following query syntax to sort the result:
Code Block |
---|
sort:<field_name>[:<order>] |
Where <field_name> is either 'date' (default) or 'relevance' or any item field name you want to sort by and <order> is either 'asc' for ascending or 'desc' for descending. The order suffix is optional, the default order is descending.2
Additionally, you can add a second (or third etc) sorting criteria by adding
Code Block |
---|
[;<2nd_sort_field>[:<2nd_order>]] |
to the query syntax.
2 Note: The square brackets above mean that those fields are optional. Those brackets are not part of the syntax.
Example Queries
...
Query
...
Description
...
sort:date
...
Sort by date (descending order by default)
...
sort:date:asc
...
Sort by date in ascending order
...
sort:relevance:desc
...
Sort by relevance in descending order
...
sort:my_sortable_facet:desc;date:desc
...
Sort by "my_sortable_facet" in descending order; additionally add a second sorting by descending date
...
(Moon landing) sort:date
...
Sort query by date (default order is descending)
Time Increment
It is possible to control the time increments shown in the main timeline and in the dashboard widgets. To do so, add time_increment:<value>
to a query.
Here is the Bugzilla Project without a time_increment set:
...
The same query, with time_increment:year
...
Possible values are:
Code Block | ||
---|---|---|
| ||
time_increment:minute
time_increment:hour
time_increment:day
time_increment:week
time_increment:month
time_increment:quarter
time_increment:year |
This can also be combined with values for more flexibility. For example:
Code Block | ||
---|---|---|
| ||
time_increment:12hours
time_increment:4days
time_increment:8weeks
time_increment:6months
time_increment:3year |
Note |
---|
There is a performance impact when using a time increment that results in many individual increments. This impact is both in the user interface, where each increment needs to be drawn, as well as on the Elasticsearch level, where they need to be calculated. So use the |
Entity Search
Query syntax to search for items having entities satisfied some criteria:
Code Block |
---|
entity:{< any query to match a single entity document >} |
Example:
...
Search for Items containing a specific Entity of type company:
Code Block |
---|
entity:{type:company AND name:"Thomson Reuters"} |
...
Search for Items containing at least one company-typed Entity "Thomson Reuters" and another one Entity "Squirro":
Code Block |
---|
entity:{type:company AND name:"Thomson Reuters"} AND entity:{type:company AND name:Squirro} |
...
Search for Items containing a specific Entity of type company with a confidence higher than 80%:
Code Block |
---|
entity:{type:company AND name:"Thomson Reuters" AND confidence > 0.8} |
...
Search for Items containing any Entity of type company with confidence higher than 70%:
Code Block |
---|
entity:{type:company AND NOT confidence < 0.7} |
...
Search for Items containing no Entity of type company with confidence higher or equal than 20%:
Code Block |
---|
entity:{type:company AND confidence < 0.2} |
...
Search for Items containing any Entity of type deal with at least a 70% confidence:
Code Block |
---|
entity:{type:deal AND confidence > 0.7} |
...
Search for Items containing a specific Entity of type deal:
Code Block |
---|
entity:{type:deal AND properties.size:100 AND properties.region:US AND properties.industry:Tech AND properties.target:Whatsapp AND properties.acquirer:Facebook} |
...
Search for Items containing one Entity with target Squirro and another Entity with target Whatsapp:
Code Block |
---|
entity:{type:deal AND properties.target:Squirro AND properties.industry:Tech} AND entity:{type:deal AND properties.target:Whatsapp AND properties.industry:Tech} |
Search for Items containing an Entity of type deal with a property size bigger than 100:
Code Block |
---|
entity:{type:deal AND properties.size > 100} |
Starred and Read Items
Starred items are items marked as favourite / bookmarked items.
Note |
---|
Note: You need to enable flags for your project(s) before you are able to query for starred and read items. For this set the |
Query syntax for (un)starred items and (un)read items:
Code Block |
---|
is:starred
is:unstarred
is:read
is:unread |
...
This page can now be found at Query Syntax on the Squirro Docs site.