AACSearch / guide
Data and indexing
Collections and schemas, the document browser, import and export, connectors, CMS stores, and the Algolia migration wizard.
Collections
/dashboard/collections lists the organization's collections with health at a
glance: document count and share, capability badges for searchable,
faceted and semantic (vector-bearing) collections, and a "needs
attention" signal derived from the schema. Stat tiles count collections,
documents and indexed fields; the fourth tile reads Need attention when any
collection has an empty index, no searchable field or no filters, and
Semantic-ready (with a hint) otherwise.
- Search and sort by name or field, newest / name / most documents / needs
attention. Press
/to focus the search box and Esc to clear it. The sort choice and a table-or-cards layout are both remembered per browser. - Row actions open the collection, browse its documents, preview search, edit the schema, copy the name or schema JSON, and delete.
- Creating, editing and deleting are owner/admin actions. A member sees the buttons disabled with the reason, rather than hidden.
- Deleting a collection drops its documents and disables search rules, synonyms and curation sets that name it. The confirmation says so; the action cannot be undone.
- The empty state offers New collection and Guided setup (the quick start).
Create a collection
/dashboard/collections/new is a three-step wizard:
Name and settings
A URL-safe name, an optional preset (Products, Articles, Web
pages, Blank) that replaces whatever fields are already drafted, the
default sorting field, token separators, symbols to index, a nested-fields
switch (turned on automatically when an object field appears) and a
metadata JSON block.
Fields
The field editor. Available types are string, string[], int32,
int32[], int64, int64[], float, float[], bool, bool[],
geopoint, geopoint[], object, object[], string*, image and auto,
each with Facet, Index, Optional and Sort flags (Sort is
disabled for types that cannot be sorted). Field names must be unique and
non-blank; facet and sort are rejected for types that do not support them; a
field that is not indexed must also be optional; the default sorting field
must be a declared int32, int64, float or sortable string and cannot be
optional; and object fields require nested fields to be enabled.
Review and create
Shows the exact POST /collections body, lists validation errors live, and
on success opens the new collection.
Collection detail
/dashboard/collections/{name} shows the schema, a document preview, a
retrieval testing panel, ready-made code samples and import. Tabs are mirrored
in the URL (?tab=). Stat tiles cover documents, fields (with the
searchable/faceted/sortable hint), creation time and default sort, plus
nested fields, vector-field count and separators. A problem list appears above
the tabs when the schema would not search well, or a note that semantic and
image search can run on this collection. Actions open the documents, the schema
editor, the search preview, the search playground, the query graph, the delete
confirmation, and copy the name or the schema JSON.
- Schema — a field explorer with a "find a field or type" box, multi-select
trait filters (searchable, faceted, sortable, optional, vector, needs a look)
with live counts, collapsible
prefix.*groupings, and an "In the data" column from a facet probe (value count, a 50+ cap, coverage and values per document, "never populated"). Each row can copy its field name or filter the document browser by it. - Documents — a search box over the schema's
query_byfields, the "found · search_time_ms · showing the first 20" line, expandable rows showing raw JSON, and an Open in Documents handoff that carries the query. - Code samples — four language tabs (cURL, TypeScript, Python, PHP) with copyable snippets for creating a collection, importing documents and searching.
- Import — a JSONL drop box (paste, drag and drop, or choose a file, up to 8 MB) with an on-conflict action (upsert / create / update / emplace) and client-side line validation that blocks the import on parse errors, a missing id or an undeclared field. This is not the six-tab import dialog from the document browser; it feeds one collection from pasted JSONL.
Edit a schema
/dashboard/collections/{name}/edit applies PATCH /collections/{name}. It
has two halves:
- Existing fields — name, type, flags and locale, with a Drop checkbox that strikes the row through.
- New fields — the same field editor, starting empty.
Changing a field's type or flags is expressed as a drop plus a re-add under the same name, in one request. The review card shows the exact PATCH body and blocks saving on validation errors — including dropping the default sorting field without re-adding it. Dropping any field asks for confirmation first, unsaved changes are guarded, and the save fails with an inline error if the API rejects it.
Documents
/dashboard/documents is the document browser for one collection. The engine
has no "list everything" endpoint, so the screen searches with q=* and layers
filters on top.
- Table — a sticky select-all column, the document id, the chosen data columns, and per-row actions. Cells render image thumbnails where the field looks like an image and tooltips for long values. Sorting is offered only on schema fields that are sortable and not arrays.
- Filters — facets measured from the data (up to 8 live facets per query,
20 values each; pinned chips are remembered per collection), a raw
filter_byexpression box, and an insights panel that flags dead, constant and identifier-like facets, and fields with too many distinct values to use as a filter. - Columns picker — search and fill-rate bars per field, with a Smart reset to the default selection.
- Pagination — 10 / 25 / 50 / 100 / 250 per page, with the range, the
active filter count and the engine's
search_time_msin the footer. - URL state — collection, query, facets, raw filter, sort, page and
per-page round-trip through the query string, so a view can be shared or
bookmarked.
?pin=fieldis a one-way deep link that opens the screen with that facet in the filter bar; the chosen pinned set is kept in the browser, not written back to the URL. - Density — a compact-rows toggle, and an insights panel whose open state is remembered.
Import
The import dialog has six tabs:
| Tab | What it takes |
|---|---|
| Text | JSONL, a JSON array or CSV (converted in the browser). |
| File | The same formats as a file, plus a Yandex Market feed (.yml / .xml, optionally .gz) of any size. |
| Website | A URL, crawled one level deep, up to 100 pages. |
| Sitemap | A sitemap URL, up to 100 pages. |
| YML feed | A Yandex Market feed URL, with no page cap. See YML feeds. |
| YouTube | A video, indexed with its title, author, thumbnail and transcript. |
Every tab writes an ingest job (POST /ingest-jobs) that the screen polls
every two seconds, showing status, fetched / imported / failed counters and the
first errors. Small batches of up to 100 documents with string ids also go
through the asynchronous path; larger or "dirty value" payloads use the
synchronous POST /collections/{name}/documents/import instead.
Import options are the write action — upsert (default), create,
update, emplace — and how to treat values whose type does not match the
schema: the engine default, coerce_or_reject, coerce_or_drop, drop or
reject.
The header also has an Ingest via API modal with cURL, TypeScript and
Python equivalents of the same import (action=upsert) and a link to Settings →
API keys, for scripting the import instead.
Export
- Export all downloads the collection as JSONL, optionally filtered, and reports how many lines were written.
- Export selected downloads just the selected documents by id.
- Delete selected removes them in one request and reports how many were deleted.
- A row can be copied by id, deleted, or opened into a document drawer with per-field rendering, a View raw JSON / Copy JSON toggle, and its own delete.
Ingest jobs
Below the browser, a panel lists the 30 most recent ingest jobs for the collection — job, collection, source, status, created, fetched, imported, failed. It refreshes every three seconds while any job is queued or processing, lets a failed job be retried, and can delete a job row (the indexed documents stay). Yandex Market jobs also show their resume cursor and pass count.
A 429 from the quota renders a dedicated "quota exceeded" state with the
reset time instead of the table.
Sources (connectors)
/dashboard/sources lists the connectors that keep collections filled, with
problems first. Each card shows a status badge, the provider and target
collection, the sync mode and cron, the last sync (or "never synced"), the last
error, a masked secret, a disabled badge when the connector is off, and a
quiet badge when an enabled source has not synced for over a day and
reports no error. A per-card action opens the documents this source writes.
Counts double as filters (All / Error / Syncing / Paused), each disabled when
its count is zero; a free-text filter appears once there are at least five
sources (/ focuses it, Esc clears it). A header Refresh re-reads the list,
a failed load shows a banner with Retry, and the whole list refreshes every
four seconds while anything is syncing.
/dashboard/sources/new binds one provider to a collection:
- Name and Collection — the collection field links to create one first if it does not exist yet.
- Provider —
bitrix,bitrix24,prestashop,woocommerce,yml,sitemaporcustom. - Sync mode —
push(the CMS posts to the connector webhook) orpull(the platform fetches a URL with a token). - Pull URL and pull token — shown in pull mode; the token is a password
field and is the module option
pull_token, not the tenant API key. - Schedule — a cron expression; the hint states that
*/15 * * * *and0 3 * * *are the supported schedules. - Enabled, with Cancel, and required-field validation on submit.
On creation the signing secret is shown once, together with the connector
id and the webhook URL ({API_URL}/v1/connectors/{id}/webhook) that a CMS
module posts to, each with a copy button and Open source / Back to list
actions. CMS modules authenticate with HMAC headers, not an API key.
/dashboard/sources/{id} edits the connector and shows its history. A status
line reports the provider → collection, the last sync (or "never synced") and
"updating…" while a sync runs, beside the status, id and masked-secret badges.
The header offers Refresh, Open documents (the browser filtered to the
connector's collection) and Delete, whose confirmation states that the sync
history goes while the indexed documents stay.
- The form covers name, sync mode, schedule, the pull URL and token (a blank token keeps the stored one) and the enabled switch. The webhook URL is read-only, and a stored error is shown inline.
- Jobs — the last 30 connector jobs with status, kind, created time, stats (accepted / applied / deleted / failed / fetched / imported) and error; a row opens a drawer with the finished time, computed duration, every stats key/value, the error and copy buttons for the job id and the stats JSON.
- Journal — the last 50 documents the connector touched, with external id, document id, deleted and updated timestamps, and Load more.
The screen polls every three seconds while the connector is syncing or a job is queued or processing, and a poll never overwrites an unsaved form edit.
Deleting a connector removes its sync history but leaves the indexed documents in place.
Integrations
/dashboard/integrations is a catalogue rather than a data screen. It groups:
- CMS stores — module-based connections, see below.
- Migrate from Algolia — the importer.
- Live data sources — the providers that already have a connector, each carrying a "Module: status" or "Connector API" badge and an Add in Sources action.
- Available now — nine tiles covering a 1C-Bitrix module, the Python, PHP and Go SDKs, the MCP server, the REST API and the widgets, each with its own copyable snippet.
- Request access — OAuth connectors that are not live yet (Notion, Google Drive, Dropbox, OneDrive, Box, Confluence, Intercom, SharePoint, Zendesk, S3, Cloudflare R2). They are deliberately marked unavailable and open a pre-filled request email; the page header carries a general Request a connector link as well.
- Built-in importers — a card linking to Documents, where JSONL, JSON and CSV can be pasted or uploaded.
The catalogue is static: it does not read your organization's connector state, so treat a tile as "this integration exists", not "it is connected".
CMS stores
/dashboard/integrations/cms connects a CMS module with one installation key
and publishes per-store search settings. Its header has a Refresh and links to
Subscription and payments and Sync history.
Connect
Store name (120 characters), website origin, platform and environment
(production / staging). The returned installation key is shown once,
with an "I saved the key" acknowledgement.
Installation cards
Show a status derived from the module's last contact and applied revision — Disconnected, Waiting for module, Applying settings or Connected — plus origin, provider, environment, last error, last contact and module/CMS versions. Disconnect revokes the key.
Commands
Reindex catalog, Sync changes and Discover catalogs are queued for the module with an idempotency key; they are disabled while a command is queued or running. The last five commands show status, progress, error and a Cancel action, and are polled while queued or running. Search results update only after AACSearch has processed the received data.
Settings
Per-store locale and currency; switches for search in the existing theme, smart filters, recommendations and AACSearch widgets; an Add discovered stores action; and source bindings that pick an existing connector or create a dedicated one ("Create a data source for this catalog" builds a collection from the detected schema, then a push connector named after the store and catalog). An optional search preset and recommendation model can be attached. Publishing sends the configuration with an expected revision, so two admins cannot silently overwrite each other.
Migrate from Algolia
/dashboard/migrate-algolia is a four-step, one-shot importer —
Upload → Review → Apply → Done — with a Quick start link in the header.
Upload
Takes a target collection name (auto-derived from the config filename),
an Algolia settings JSON (a file or pasted text, usually containing
settings, synonyms and rules) and, optionally, records as .json,
.ndjson or .jsonl with objectID.
Review
Shows what will be created: a schema table (name, type, facet, sort),
suggested query_by and default_sorting_field, up to 30 warnings, an
"After import" notes list, and checkboxes for creating or reusing the
collection, importing synonyms, importing rules as curation, importing
records, and — destructive — replacing an existing collection. Each checkbox
is disabled when its source is empty, and the schema table shows at most 40
rows ("Showing 40 of N").
Apply
Runs the steps and reports ok/fail per step: collection, synonyms, rules as curation, records.
Done
Links to the collection, Synonyms, Curation and the search playground, and offers Migrate another index.
The wizard is honest about what cannot be converted. Nested or multi-path
searchableAttributes are skipped; a synonym needs at least two terms
(multi-way) or an input/synonyms pair (one-way); altCorrection becomes a
one-way synonym; placeholder and unknown synonym types are skipped; disabled
rules are skipped; only a rule's first condition is mapped; optionalFilters
are not mapped; a redirect is stored as curation metadata only; unmappable
rules are skipped.
Next
Accounts, sign-in and organizations
Register, verify your email, reset a password, accept an invitation, and create or switch the organization every screen is scoped to.
Search and relevance
Preview and playgrounds, search rules and merchandising, synonyms, curation, stopwords, stemming, presets, aliases, semantic and image search, query intelligence and NL models.