AACSearch / руководство
Пресеты, стоп-слова и стемминг
Сохраните повторно используемые параметры поиска как пресет, исключите шумовые слова стоп-словами и научите токенизатор нестандартным корням слов через словарь стемминга.
Три небольших независимых ресурса конфигурации, на которые поиск может ссылаться по имени, — ни один из них не меняет ранжирование, как правила поиска: они меняют то, что запрос может не указывать явно, и то, как токенизатор читает слово. Каждой операции на этой странице нужен полный ключ.
Пресеты
Пресет хранит под именем полный набор параметров поиска (или мультипоиска),
так что клиент передаёт preset=<name> вместо того, чтобы каждый раз повторять
query_by, filter_by и остальное:
| Операция | Эндпоинт |
|---|---|
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=дрель" --data-urlencode "preset=storefront-default"В отличие от профиля поиска, пресет — это плоское воспроизведение параметров движка без истории релизов, без allowlist фасетов и сортировок и без браузерной проекции. Профиль поиска — когда браузерный ключ нужно ограничить им, пресет — когда это серверный ярлык, который контролируете только вы.
Стоп-слова
Набор стоп-слов — список слов, которые поиск должен игнорировать: шаблонные фразы бренда, служебные слова, которые не нужно учитывать при сопоставлении на языке каталога:
| Операция | Эндпоинт |
|---|---|
upsertStopwordsSet | PUT /stopwords/{setId} |
retrieveStopwordsSets | GET /stopwords |
retrieveStopwordsSet | GET /stopwords/{setId} |
deleteStopwordsSet | DELETE /stopwords/{setId} |
await client.stopwords.upsertStopwordsSet({
setId: "countries",
body: { stopwords: ["Германия", "Франция", "Италия"], locale: "ru" },
});Сошлитесь на id набора через параметр поиска stopwords в любом поиске
коллекции — слова из набора убираются из запроса перед выполнением. Набор
ничего не делает, пока поиск на него не ссылается.
Словари стемминга
Словарь стемминга сопоставляет нестандартные формы слова с корнем («люди» → «человек») для языков или лексики, где встроенный стеммер ошибается:
| Операция | Эндпоинт |
|---|---|
importStemmingDictionary | POST /stemming/dictionaries/import?id=<dictionaryId> — тело JSONL, по одному {"word": "...", "root": "..."} на строку |
listStemmingDictionaries | GET /stemming/dictionaries |
getStemmingDictionary | GET /stemming/dictionaries/{dictionaryId} |
cat > irregular-plurals.jsonl <<'EOF'
{"word":"люди","root":"человек"}
{"word":"дети","root":"ребёнок"}
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.jsonlСошлитесь на id словаря через опцию схемы поля stem_dictionary и включите
stem: true для этого поля при
создании коллекции. Эндпоинтов
обновления или удаления пока нет — чтобы заменить содержимое словаря,
импортируйте его заново под тем же id.
Профили поиска и релизы
Настройте витрину, публикуйте неизменяемые версии и откатывайте их без потери черновика.
Правила поиска и синонимы
Мерчандайзинг коллекции с сервера — фильтр исключения, бусты, закрепления, редиректы, разнообразие, fallback при нуле результатов, расписание — и словарь: синонимы, стоп-слова, словари стемминга.