I'm using pg_search
to search for Products:
class Product
include PgSearch
pg_search_scope(
:search_for,
against: %i(sku),
associated_against: { translations: [:name, :description] },
using: { tsearch: { prefix: true } }
)
end
This works fine so far. But I'd like to add the option to search for partial keywords, so customers can find a product that has the sku "123456789" by typing "45678". This would be easy to do with LIKE
, but can find no way to combine that with pg_search
, so the results are combined and ranked together.
How can I get pg_search
to find products by partial strings?
prefix: true
you pass should do the work. You can try usingtrigram
instead oftsearch
, as that one searches through triplets of letters instead of whole string – Metryprefix: true
only looks for prefixes, so for12345
I get matches searching for123
, but not for234
– Help