Skip to navigation

What gets imported

Every Algolia setting, synonym type and rule gets one of three results: mapped, approximated or not mapped.

You’ll need: an import that has finished, or an Algolia index you’re planning to import.

ResultMeaning
MappedCaptain does the same thing.
ApproximatedCaptain does something close. The notes below say how.
Not mappedCaptain has no equivalent yet, so the setting is left out.

The console’s summary lists the synonyms and rules that didn’t come over. The full report, one row per setting, synonym type and rule with its reason, is at GET /v1/indexes/{index}/import/report and needs an admin key. Ask Captain support for it if you don’t have one.

Products

Captain keeps every attribute of every product exactly as Algolia holds it, nested objects included. A product with "attributes": {"color": "red"} keeps color inside attributes. That’s how a record in Captain matches its record in Algolia.

  • objectID becomes the product’s ID.
  • Products come back in the same shape from the records API (GET /v1/indexes/{index}/records/{id} and POST /v1/indexes/{index}/records/get), in search and browse results, and on the Algolia-compatible routes.
  • Captain adds id, equal to objectID. The records API also adds fields, Captain’s typed view of the product.
  • Captain drops only the keys Algolia adds to its own answers: _highlightResult, _snippetResult, _rankingInfo and _distinctSeqID.
  • Settings name a nested attribute the way Algolia does, as in attributes.color, to filter, facet or sort on it.
  • Captain reads hierarchicalCategories for its own category search without adding anything to the product.

A product’s own attribute named id comes back holding the objectID, because Captain uses id for the product’s ID.

The console’s import and an import through the API that reads from Algolia (POST /v1/indexes/{index}/import/algolia with app_id, api_key and index_name) both work this way by default. An uploaded export, or settings sent for products added earlier, keeps the older mapping unless it sends "object_search": true. See Import from Algolia in Records.

Search settings

Algolia settingResultNotes
attributesForFacetingMapped or approximatedEach attribute becomes a filterable facet. filterOnly(x) filters without counts, as in Algolia. The row is approximated when an entry can’t work exactly: searchable(x) makes a facet, but searching inside facet values isn’t built. A number facet counts values only up to 1,000 distinct values. Long descriptive text can’t be a facet.
numericAttributesForFilteringMapped
typoTolerance, minWordSizefor1Typo, minWordSizefor2TyposMappedSame defaults as Algolia: 1 typo from 4 letters, 2 from 8.
ignorePluralsMappedStemming covers plurals.
hitsPerPage, paginationLimitedTo, maxValuesPerFacetMapped
attributesToRetrieve, attributesToHighlight, highlightPreTag, highlightPostTag, responseFieldsMapped
enableRulesMapped
searchableAttributesApproximatedThe order becomes weight tiers on text attributes: the first entry is primary, the second secondary, the rest low. Attributes Algolia doesn’t search aren’t searched. Word position (unordered() and ordered()) isn’t reproduced. Short labels such as a color are searched in Captain’s attribute matching whatever their tier, and title, brand, description and category keep Captain’s built-in matching.
customRankingApproximatedEach number or date attribute becomes sortable and goes into the catalog’s custom ranking, in Algolia’s order. A string attribute isn’t ranked, and the report says so. See Custom ranking.
rankingApproximatedAlgolia’s tie-breaking criteria (typo, geo, words, filters, proximity, attribute, exact) aren’t reproduced. Captain’s relevance decides.
removeStopWordsApproximatedCaptain’s own English stop words.
queryLanguages, indexLanguagesApproximatedEnglish analysis only.
optionalWords, removeWordsIfNoResultsApproximatedNo Captain search requires every word.
decompoundQueryApproximatedHyphens, and words joined or split, only.
allowTyposOnNumericTokensApproximatedNumbers and codes are matched exactly, never corrected.
replicasApproximatedCaptain doesn’t build sorted copies. Each search sorts itself with sort, on any sortable attribute.
distinct, attributeForDistinctApproximatedBecomes group_by on the attribute. Groups come from the most relevant matches, so deep pages and totals aren’t grouped exactly. Settings from Algolia gives the limits.
enablePersonalizationNot mapped
renderingContentMapped when it holds only facet orderingFacet ordering becomes the catalog’s facet order. Anything else in it, such as redirects and widgets, is left out, and the row is then approximated.
advancedSyntax, disableTypoToleranceOnWords, disableTypoToleranceOnAttributes, unretrievableAttributes, relevancyStrictness, separatorsToIndex, camelCaseAttributes, attributesToSnippet, userDataNot mapped

A setting with a value that isn’t in this table is reported as not mapped. A setting with no value is reported as not used.

Custom ranking

customRanking sets the catalog’s custom ranking, up to 4 number or date attributes in Algolia’s order. It’s the custom_ranking setting in Index Settings.

  • A search with no text, and browse, list every match in custom ranking order. The first attribute decides, the next breaks its ties, and a product missing a value comes after the products that have one. This order is exact. The only exception is a value far outside the range Captain saw when it built the catalog, which ties with others at the end.
  • A search with text orders results that Captain finds equally relevant by the custom ranking. Captain walks the results in relevance order and groups them: a result stays in the current group while its score is within 2% of the query’s score spread from the group’s first result. Inside a group, the custom ranking decides the order. Captain’s relevance is one combined score, not Algolia’s tie-breaking criteria, so results Algolia calls tied can score differently here and keep their relevance order.
  • A search with sort uses that sort instead of the custom ranking.
  • After an in-place update to a ranked value, the order of a search with no text catches up at the next build.

Synonyms

Algolia typeResult
synonym (two-way)Mapped
oneWaySynonymMapped
altCorrection1, altCorrection2Approximated: they become one-way synonyms, without a typo penalty.
placeholderNot mapped

Merchandising rules

Algolia rule partResult
Query pattern with is, startsWith, endsWith or containsMapped
promote (pins) and hideMapped
params.filtersMapped
optionalFiltersApproximated: they become a boost.
userData, facet ordering in renderingContent, and a context conditionMapped
Query edits, automaticFacetFilters, redirects and widgets in renderingContent, condition filtersNot mapped
  • Captain skips a disabled rule, and a rule whose validity windows have all ended.
  • A rule with a current or future validity window is imported without the window, so it applies all the time. Check scheduled rules, such as a holiday promotion, after the import.