> For the complete MongoDB documentation index, see www.mongodb.com/docs/llms.txt

<!--
Tab options on this page. Append to the .md URL to filter:
  ?tabs=<id,...>   select specific tabs (e.g. ?tabs=nodejs,shell)
  ?allTabs=true    include every tab
  (no param)       default: one tab per tabset

Available tabs:
  other tabs: vib, jsonib
-->

# Whitespace Analyzer

The `whitespace` analyzer divides text into searchable terms (tokens) wherever it finds a whitespace character. It leaves all text in its original letter case.

If you select Refine Your Index, the Atlas UI displays a section titled View text analysis of your selected index configuration within the Index Configurations section. If you expand this section, the Atlas UI displays the index and search tokens that the `whitespace` analyzer generates for each sample string. You can see the tokens that the `whitespace` analyzer creates for a built-in sample document and query string when you create or edit an index in the Atlas UI Visual Editor.

**Important:**

MongoDB Search won't index string fields where analyzer tokens exceed 32766 bytes in size. If using the keyword analyzer, string fields which exceed 32766 bytes will not be indexed.

## Example

The following example index definition specifies an index on the `title` field in the [sample\_mflix.movies](https://www.mongodb.com/docs/manual/sample-data/sample-mflix.md#std-label-sample-mflix) collection using the `whitespace` analyzer. To follow along with this example, [load the sample data](https://www.mongodb.com/docs/atlas/import/load-sample-data.md#std-label-sample-data) on your cluster and either use [`mongosh`](https://www.mongodb.com/docs/mongodb-shell.md#mongodb-binary-bin.mongosh) or navigate to the Create a Search
Index page in the Atlas UI following the steps in the [Create a MongoDB Search Index](https://www.mongodb.com/docs/search/tutorial.md#std-label-create-fts-index) tutorial.

Then, using the `movies` collection as your data source, follow the example procedure to create an index from [`mongosh`](https://www.mongodb.com/docs/mongodb-shell.md#mongodb-binary-bin.mongosh) or the Atlas UI Visual Editor or JSON editor.

***

### Visual Editor

1. Click Refine Your Index to configure your index.

2. In the Index Configurations section, toggle Dynamic Mapping to off.

3. In the Field Mappings section, click Add Field to open the Add Field Mapping window.

4. Select `title` from the Field Name dropdown.

5. Click Customized Configuration.

6. Click the Data Type dropdown and select String if it isn't already selected.

7. Expand String Properties and make the following changes:

   | Index Analyzer | Select `lucene.whitespace` from the dropdown. |
   | --- | --- |
   | Search Analyzer | Select `lucene.whitespace` from the dropdown. |
   | Index Options | Use the default `offsets`. |
   | Store | Use the default `true`. |
   | Ignore Above | Keep the default setting. |
   | Norms | Use the default `include`. |

8. Click Add.

9. Click Save Changes.

10. Click Create Search Index.

```json
db.movies.createSearchIndex(
  "default",
  {   
    "mappings": {
      "fields": {
        "title": {
          "type": "string",
          "analyzer": "lucene.whitespace",
          "searchAnalyzer": "lucene.whitespace"
        }
      }
    }
  }
)
```

The following query searches for the term `Lion's` in the `title` field.

1. Click the Query button for your index.

2. Click Edit Query to edit the query.

3. Click on the query bar and select the database and collection.

4. Replace the default query with the following and click Find:

   ```json
   [
     {
       "$search": {
         "text": {
           "query": "Lion's",
           "path": "title"
         }
       }
     }
   ]
   ```

   **Output:**

   ```js
   SCORE: 3.7370920181274414  _id:  "573a13ebf29313caabdcfc8d"
      awards: Object
      cast: Array (4)
      countries: Array (1)
      directors: Array (1)
      fullplot: "A documentary on young actress, Marianna Palka, as she confronts her r…"
      genres: Array (3)
      imdb: Object
      languages: Array (1)
      lastupdated: "2015-09-03 00:37:45.227000000"
      num_mflix_comments: 0
      plot: "A documentary on young actress, Marianna Palka, as she confronts her r…"
      poster: "https://m.media-amazon.com/images/M/MV5BMTgzMTc2OTg2N15BMl5BanBnXkFtZT…"
      released: 2014-01-18T00:00:00.000+00:00
      runtime: 15
      title: "The Lion's Mouth Opens"
      type: "movie"
      writers: Array (1)
      year: 2014
   ```

```json
db.movies.aggregate([
  {
    "$search": {
      "text": {
         "query": "Lion's",
         "path": "title"
      }
    }
  },
  {
    "$project": {
      "_id": 0,
      "title": 1
    }
  }
])
```

**Output:**

```json
[ { title: "The Lion's Mouth Opens" } ]
```

MongoDB Search returns these documents by doing the following for the text in the `title` field using the `lucene.whitespace` analyzer:

- Retain the original letter case for the text.

- Divide the text into tokens wherever it finds a whitespace character.

The following table shows the tokens (searchable terms) that MongoDB Search creates using the [Whitespace Analyzer](https://www.mongodb.com/docs/search/indexes/analyzers/whitespace.md#std-label-ref-whitespace-analyzer) and, by contrast, the [Simple Analyzer](https://www.mongodb.com/docs/search/indexes/analyzers/simple.md#std-label-ref-simple-analyzer) and [Keyword Analyzer](https://www.mongodb.com/docs/search/indexes/analyzers/keyword.md#std-label-ref-keyword-analyzer) for the documents in the results:

| Title | Whitespace Analyzer Tokens | Simple Analyzer Tokens | Keyword Analyzer Tokens |
| --- | --- | --- | --- |
| `The Lion's Mouth Opens` | `The`, `Lion's`, `Mouth`, `Opens` | `the`, `lion`, `s`, `mouth`, `opens` | `The Lion's Mouth Opens` |

The index that uses `whitespace` analyzer is case-sensitive. Therefore, MongoDB Search is able to match the query term `Lion's` to the token `Lion's` created by the `whitespace` analyzer.
