Skip to content

How search works

Why a product matches, and why it doesn't.

Marutto Search is neither a prefix match nor a substring match. It splits Japanese text into words, absorbs differences in how those words are written, and matches on the result.

1. Normalisation — removing differences in writing

Before matching, the same transformations are applied to both the query and the product text.

TransformationExample
NFKC normalisationWD650wd650
Case foldingWD650wd650
WhitespaceRuns of spaces collapse to one
Legacy kanji forms, ,

Seventeen legacy kanji forms are folded (髙﨑澤齋齊國櫻眞壽廣榮濵濱邊邉德). These appear in Japanese personal and shop names, so a catalogue that is inconsistent about them still matches either spelling.

2. Morphological analysis — splitting Japanese into words

Japanese does not put spaces between words. Marutto Search runs the text through a morphological analyser (lindera with IPADIC, the dictionary ships inside the app) before indexing it.

「春夏用リネンワンピース」 → 春夏 / 用 / リネン / ワンピース

That is why searching for ワンピース (dress) finds 春夏用リネンワンピース. A prefix search would not.

3. Reading conversion — absorbing how it was typed

The same word reaches the same products however it is entered.

InputMatchesapplied_transforms in the response
りんごリンゴジュースkana
リンゴりんごジャムkana
ringoりんごジュースromaji
わんぴーすワンピースkatakana

No configuration is required. This works with no synonyms registered at all.

Not the same as synonyms. Steps 1–3 are not synonyms: they are character and reading conversions, so they work out of the box. A change of wording — Tシャツ versus カットソー, both meaning "t-shirt" — cannot be reached by conversion and is registered as a synonym instead (see Admin controls).

4. Part numbers, model numbers, SKUs

Part numbers are matched whole rather than split into words.

  • An exact match is pinned to the top
  • A partial entry still surfaces it (wd650 finds WD650DR)
  • Fullwidth input (WD650) reaches a halfwidth part number
  • SKUs and barcodes are searched too

A known limitation. Entering only part of a hyphenated part number (TOKYO-MUG looking for TOKYO-MUG-RED) can return nothing, because of how the Japanese analyser treats the hyphen. Part numbers without hyphens are unaffected.

5. Typo correction

A misspelled query is pulled towards the nearest term. The response carries typo in applied_transforms.

Correction is a last resort: when something matches correctly, that wins.

6. Ordering

Under sort=relevance (the default), rank comes from:

  • Where the match occurred — a match in the title counts for more than one in the description
  • The quality of the match — exact > word > via a reading conversion > typo correction
  • Sales and clicks — these separate products that match about equally well
  • The merchant's settings — boosts and pins (see Admin controls)

The score is not returned. It changes with every improvement to search quality, so publishing it would mean your integration breaks on releases meant to be safe. To control ordering, use the boosts and pins in the admin.

price_asc, price_desc and newest order by that field instead of by relevance.

7. What is searched

ContentFields
ProductsTitle, description, vendor, product type, tags
Products (Pro)The above plus metafields, variants and reviews
Articles and pagesTitle and body

Draft and unpublished products are not indexed. Search returns only what a shopper can actually buy.


Next: Indexing and sync — when a new product starts appearing

Marutto Search