Re: BUG #18479: websearch_to_tsquery inconsistent behavior for german when using parentheses
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: esemmano@gmail.com
Cc: pgsql-bugs@lists.postgresql.org
Date: 2024-06-13T23:59:22Z
Lists: pgsql-bugs
[ couldn't let go of this ... ]
I wrote:
> It's fairly confusing that this code manages to ignore not-ISOPERATOR
> punctuation. It seems like that gets eaten by gettoken_tsvector()
> and then later we decide there's not really a word there.
Yeah, further investigation shows that such cases effectively act
like stopwords: they are passed back to makepol() as VAL strings,
but then lexize processing rejects them as not words.
> I'm also confused how come the same thing doesn't happen in the
> english tsconfig. Not sure it's worth poking at more, though.
D'oh: "or" is a stopword in the english config. The english case
is still wrong of course, just differently:
regression=# select websearch_to_tsquery('english', 'foo or (baz bar) or (ding dong)');
websearch_to_tsquery
-----------------------------------------
'foo' | 'baz' & 'bar' & 'ding' & 'dong'
(1 row)
regards, tom lane
Commits
-
Fix parsing of ignored operators in websearch_to_tsquery().
- df95c1ec0e98 15.8 landed
- 56a8296212b6 17.0 landed
- 086ecd12bc1c 16.4 landed
- c7de5a654567 13.16 landed
- 5e63a6f43415 12.20 landed
- 5912bf77c526 14.13 landed