contains
New in Domino 11: In addition to using NSF scanning and
view indexes, DQL provides the contains
operator to process queries against full
text indexes. A database must have a full text index to be processed in this way.
contains
to search for text strings in a specific field or across all fields
in a document. contains
uses the FTSearch engine to process
queries and is subject to the rules of the FT syntax for any values used, including
wildcards.Sales_person contains (‘Trudi’, ‘Jack*’)
Order_description contains all (‘diagonal’, ‘brushed nickel’, ‘cap*’)
contains ('Mercury', 'spinning wildly', 'orbit*')
contains all ('Tiger Lily', 'Pete*', 'Lost boy?')
all Use all
to find only documents that contain all of
the specified strings. Omit all
to find documents with any of the specified
strings.
wildcards Use the *
(asterisk) wildcard to match multiple
characters. Use the ?
(question mark) wildcard to match a single character.
short_description contains (‘??????hold*’)
finds
threshold
and thresholding
.short_description contains (‘hold?n*’)
finds each of the following:
holding
, holdon
, or holden
.short_description contains (‘*’)
short_description contains (‘hold *’)
short_description contains ('hold')
short_description contains (' hold ')
dashes Dashes ‘-’ act like word separators between hyphenated compound words.
The following example returns any item that both contains the word “hold” and which is followed by any word starting with an “a”. This query could return “hold at”, “hold-all”. or “hold any” even though there is no dash. This is because the word “hold” is followed by a word that starts with “a”; the “-” acts as a word separator.
short_description contains (‘hold-a*’)
This example returns any item that both contains the word “hold” and which is followed by <WILDCARD *>; but since a lone ‘*’ returns nothing, this results in no documents returned. The “*” is treated as if it is alone because the “-” acts like a word separator (space) between “hold” and “*”.
short_description contains (‘hold-*’)
- It finds text values only. Numbers and timedates are not searchable.
- It is often the fastest method of searching document contents.
- It requires a full text index. Queries fail to compile if a database does not have a full text index.
contains
and=
are not equivalent:contains
searches for a text string while=
searches for the entire content of a field. For example, if a document includes the field sales_person with value ‘Trudi Ayton’, only the first of the following two queries finds it:sales_person contains (‘Trudi’) sales_person = ‘Trudi’
Troubleshooting
contains
will convert your query into a full-text syntax query in the
form “([<FIELD>] contains (<VALUE>))”. This is the same full-text search API used
in the client search bar and the C-API. If you are receiving unexpected results,
consider testing your queries using FTSearch or the client search bar directly. See
How can I refine a search query using
operators? in Notes documentation.
The ‘?’ operator is a wildcard that can represent any single letter. (when attached to other letters in a word).
The ‘*’ operator is a wildcard that can represent any extension of letters. (when attached to other letters in a word).
This definition is different from the conventional understanding of wildcards.