Is there a way to only match the 3 last digits of a 13 digit input search? Visitors are entering a serial number, but I only need to match the last 3 digits of it, but I do need them to enter the entire serial number.
There is no way to do that out of the box. All the queries done with Algolia are doing a prefix match (ie. search for a match from the first letter).
The way I would do it is would be a mix of changing the record format and front-end hooks.
I would first add a
last_three_digits field to my records that I would populate with the last three digits of the serial number. This should be done in a pre-processing phase, when I’m pushing my records to Algolia.
I would configure my index settings with
attributesForFaceting: ['last_three_digits'] so filtering can be done on this field (more documentation here)
Then I would add a hook on my front-end to intercept the query before it is sent to Algolia. If I detect a serial number in the query (13 digits), I would keep only the last three search for that instead. I would then remove the keyword from the query and replace it with a filtering on the
last_three_digits facet. The exact way to do this would depend on the Algolia front-end library you’re using (InstantSearch, React InstantSearch, etc).
Hope that helps,