# indexer

An internal RocketRide filter that builds an inverted word index from extracted text, enabling full-text keyword search over ingested content.

## What it does

The indexer consumes the text lane, tokenizes it, and writes each word into a
word database, stamping every object it indexes with the `wordBatchId` of the
batch it was written to. It is an internal node: autopipe inserts it after the
parser whenever an include entry sets `index` to true, so it is not added on
the canvas. Objects that already carry a `wordBatchId` are skipped unless they
are flagged for indexing again.

## Configuration

This node declares no fields of its own. It reads an `index` section from the
task configuration rather than from its own component config:

| Key | Default | Description |
| --- | ------- | ----------- |
| `indexOutput` | — | Required. Where each word database is written. `%BatchId%` in the URL expands to the current batch number. |
| `batchId` | `0` | Number of the first batch. |
| `compress` | `false` | Compress the word database. |
| `maxWordCount` | `250,000,000` | Words per batch before a new one starts. |
| `maxItemCount` | `300,000` | Objects per batch before a new one starts. |

### Batches

A batch is one word database file. When either limit is exceeded the current
database is closed and the next batch opens under the next batch number, so
`indexOutput` needs `%BatchId%` to keep the files apart. An object's
`wordBatchId` names the file its words went to.

## Notes

### Write and read modes

The mode follows the endpoint. In write mode the node builds word databases as
described above. In read mode it renders text back out of existing databases
instead, which requires a `batches` map in the task configuration naming the
databases to read.

<!-- ROCKETRIDE:GENERATED:PARAMS START -->
<!-- Generated by nodes:docs-generate. Do not edit by hand. -->

## Schema

_No configuration fields._

## Source

[<svg viewBox="0 0 16 16" width="15" height="15" fill="currentColor" aria-hidden="true" style="vertical-align:-0.15em;margin-right:0.35em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"/></svg> View source](https://github.com/rocketride-org/rocketride-server/tree/develop/nodes/src/nodes/indexer)
<!-- ROCKETRIDE:GENERATED:PARAMS END -->
