AACSearch / guide
Presets, stopwords and stemming
Save reusable search parameters as a preset, exclude noise words with a stopwords set, and teach the tokenizer irregular word roots with a stemming dictionary.
Three small, independent configuration resources a search can reference by name — none of them change ranking the way search rules do; they change what a request is allowed to omit and how the tokenizer reads a word. Every operation on this page needs a full key.
Presets
A preset stores a full search-parameters (or multi-search) payload under a name, so a client sends preset=<name> instead of repeating query_by, filter_by and the rest on every call:
| Operation | Endpoint |
|---|---|
upsertPreset | PUT /presets/{presetId} |
retrieveAllPresets | GET /presets |
retrievePreset | GET /presets/{presetId} |
deletePreset | DELETE /presets/{presetId} |
await client.presets.upsertPreset({
presetId: "storefront-default",
body: { value: { query_by: "name,brand", filter_by: "in_stock:true", per_page: 24 } },
});curl -G https://api.aacsearch.com/v1/collections/products/documents/search \
-H "X-NOVA-API-KEY: $NOVA_SEARCH_KEY" \
--data-urlencode "q=drill" --data-urlencode "preset=storefront-default"Unlike a search profile, a preset is a flat replay of engine parameters with no release history, no facet/sort allowlist and no browser-safe view — reach for a search profile when a browser key needs to be restricted to it, and a preset for a server-side shortcut you control yourself.
Stopwords
A stopwords set is a list of words a search should ignore — brand boilerplate, connector words the catalogue's language doesn't need matched on:
| Operation | Endpoint |
|---|---|
upsertStopwordsSet | PUT /stopwords/{setId} |
retrieveStopwordsSets | GET /stopwords |
retrieveStopwordsSet | GET /stopwords/{setId} |
deleteStopwordsSet | DELETE /stopwords/{setId} |
await client.stopwords.upsertStopwordsSet({
setId: "countries",
body: { stopwords: ["Germany", "France", "Italy"], locale: "en" },
});Reference the set's id from the stopwords search parameter on any search of the collection — the words in the set are removed from the query before it runs. A set does nothing until a search names it.
Stemming dictionaries
A stemming dictionary maps irregular word forms to their root (people → person) for languages or vocabularies the built-in stemmer gets wrong:
| Operation | Endpoint |
|---|---|
importStemmingDictionary | POST /stemming/dictionaries/import?id=<dictionaryId> — the body is JSONL, one {"word": "...", "root": "..."} per line |
listStemmingDictionaries | GET /stemming/dictionaries |
getStemmingDictionary | GET /stemming/dictionaries/{dictionaryId} |
cat > irregular-plurals.jsonl <<'EOF'
{"word":"people","root":"person"}
{"word":"children","root":"child"}
EOF
curl -X POST "https://api.aacsearch.com/v1/stemming/dictionaries/import?id=irregular-plurals" \
-H "X-NOVA-API-KEY: $NOVA_API_KEY" -H "Content-Type: application/json" \
--data-binary @irregular-plurals.jsonlReference the dictionary's id from a field's stem_dictionary schema option and set stem: true on that field when creating a collection. There is no update or delete endpoint yet — re-import under the same id to replace a dictionary's contents.
Search profiles and releases
Define a storefront search configuration, publish immutable versions and roll back without losing the draft.
Search rules and synonyms
Merchandise a collection from your server — exclusion filters, boosts, pins, redirects, diversity, zero-hit fallbacks, schedules — and teach it your vocabulary with synonym sets, stop words and stemming dictionaries.