Thread: tsearch2: how to plainto_tsquery() with "|"

tsearch2: how to plainto_tsquery() with "|"

From
John Smith
Date:
i can run "...@@ to_tsquery('cat | dog')".

but if i run "...@@ to_tsquery('cat dog')", it gives me a syntax error (#42601).

so i run "...@@ plainto_tsquery('cat dog')".

but then i can't run "...@@ plainto_tsquery('cat | dog')".

can you help before i give up on tsearch2?

thks, jzs

http://postgresql.1045698.n5.nabble.com/tsearch2-plainto-tsquery-with-OR-td1885955.html
http://www.postgresql.org/docs/9.3/static/textsearch.html


Re: tsearch2: how to plainto_tsquery() with "|"

From
Tom Lane
Date:
John Smith <jayzee.smith@gmail.com> writes:
> i can run "...@@ to_tsquery('cat | dog')".
> but if i run "...@@ to_tsquery('cat dog')", it gives me a syntax error (#42601).
> so i run "...@@ plainto_tsquery('cat dog')".
> but then i can't run "...@@ plainto_tsquery('cat | dog')".

Yeah ... that's pretty much exactly the point of having two different
functions.  to_tsquery() honors boolean operators in the query, the other
doesn't.

If this doesn't fit your notions of a reasonable API, maybe you could
create your own preprocessing function.

            regards, tom lane


Re: tsearch2: how to plainto_tsquery() with "|"

From
John Smith
Date:
i thought you shared my frustration :-) (see
http://postgresql.1045698.n5.nabble.com/tsearch2-plainto-tsquery-with-OR-td1885955.html).
anyway, then "...plainto_tsquery('...')" is pretty much useless when
it fails if someone inserts a single boolean operator - back to
"...to_tsquery('...')" and inserting operators outside tsearch2. thks,
jzs

http://postgresql.1045698.n5.nabble.com/OR-tsquery-td1910087.html

On 3/25/14, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> John Smith <jayzee.smith@gmail.com> writes:
>> i can run "...@@ to_tsquery('cat | dog')".
>> but if i run "...@@ to_tsquery('cat dog')", it gives me a syntax error
>> (#42601).
>> so i run "...@@ plainto_tsquery('cat dog')".
>> but then i can't run "...@@ plainto_tsquery('cat | dog')".
>
> Yeah ... that's pretty much exactly the point of having two different
> functions.  to_tsquery() honors boolean operators in the query, the other
> doesn't.
>
> If this doesn't fit your notions of a reasonable API, maybe you could
> create your own preprocessing function.
>
>             regards, tom lane
>