Search code examples
postgresqltsvector

How can I use tsvector on a string with numbers?


I would like to use a postgres tsquery on a column that has strings that all contain numbers, like this:

FRUIT-239476234

If I try to make a tsquery out of this:

select to_tsquery('FRUIT-239476234');

What I get is:

'fruit' & '-239476234'

I want to be able to search by just the numeric portion of this value like so:

239476234

It seems that it is unable to match this because it is interpreting my hyphen as a "negative sign" and doesn't think 239476234 matches -239476234. How can I tell postgres to treat all of my characters as text and not try to be smart about numbers and hyphens?


Solution

  • This is done by the text search parser, which is not configurable (short of writing your own parser in C, which is supported).

    The simplest solution is to pre-process all search strings by replacing - with a space.