Full text search - wildcard and a stop word

From: Allan Jardine <allan(dot)jardine(at)sprymedia(dot)co(dot)uk>
To: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Full text search - wildcard and a stop word
Date: 2022-02-22 15:22:41
Message-ID: CAAMbBLtckoNmFp6irVXsKcZufM6_DiQGN2vtHhWVgofESsE11g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi all,

I'm venturing into full text search in Postgres for the first time, and I'd
like to be able to do a search by the start of a word - so I used the `:*`
operator. However, this doesn't operate as I'd expect with a stop word -
for example, my name is "Allan" so I often use it as a test string. It
contains `all` which is a stop word, which is how I noticed this issue.

To illustrate:

=> select to_tsquery('al:*');
to_tsquery
------------
'al':*
(1 row)

=> select to_tsquery('all:*');
NOTICE: text-search query contains only stop words or doesn't contain
lexemes, ignored
to_tsquery
------------
(1 row)

=> select to_tsquery('alla:*');
to_tsquery
------------
'alla':*
(1 row)

I get why that is happening - the notification basically details it, but
the wildcard at the end seems to me that it should return `'all':*` in this
case? Is this by design or could it be considered a bug? I'm using Postgres
12.10.

Thanks,
Allan

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2022-02-22 15:56:23 Re: Full text search - wildcard and a stop word
Previous Message Marcos Pegoraro 2022-02-22 12:00:36 Re: Support logical replication of DDLs