Keyword Analyzer
The keyword
analyzer accepts a string or array of strings as a
parameter and indexes them as a single term (token). Only exact matches
on the field are returned. It leaves all text in its original letter case.
Important
Atlas Search won't index string fields that exceed 32766 characters using
the keyword
analyzer.
Example
The following example index definition specifies an index on
the title
field in the sample_mflix.movies
collection using the keyword
analyzer. If you loaded the collection
on your cluster, you can create the example index using the
Atlas UI Visual Editor or the JSON Editor. After you select your
preferred configuration method, select the database and collection.
The following query searches for the phrase Class Action
in the
title
field.
db.movies.aggregate([ { "$search": { "text": { "query": "Class Action", "path": "title" } } }, { "$project": { "_id": 0, "title": 1 } } ])
[ { title: 'Class Action' } ]
Atlas Search returned the document because it matched the query term Class
Action
to the single token Class Action
that it creates for the
text in the field using the lucene.keyword
analyzer. By contrast,
Atlas Search doesn't return any results for the following query:
db.cases.aggregate([ { "$search": { "text": { "query": "action", "path": "title" } } } ])
Many documents in the collection contain the string action
, but the
keyword
analyzer only matches documents in which the search term
matches the entire contents of the field exactly. For the preceding
query, the keyword
analyzer wouldn't return any results. However, if
you indexed the field using the Standard Analyzer or
Simple Analyzer, Atlas Search would return multiple documents in the
results, including the document with the title field value Class
Action
, because it would create tokens similar to the following, which
it would then match to the query term:
Analyzer | Output Tokens | Matches action | Matches Class Action |
---|---|---|---|
Keyword Analyzer Tokens | Class Action | X | √ |
Standard Analyzer Tokens | class , action | √ | √ |
Simple Analyzer Tokens | class , action | √ | √ |