Tsearch2: casting text to tsquery

Started by Alexander Presberover 20 years ago4 messagesgeneral
Jump to latest
#1Alexander Presber
aljoscha@weisshuhn.de

Hello,

I have a question that arose while using tsearch on a large database
of book information.

In order to inject unstemmed + stemmed versions of searchstrings into
a query we want to cast an expression of type text to tsquery.
Unfortunately

SELECT 'word'::tsquery

(where the literal 'word' is of type 'unknown' seemingly) works just
fine while e.g.

SELECT ('word' || '&fullword')::tsquery

or, simpler

SELECT 'word&fullword'::text::tsquery

gives

ERROR: cannot cast type text to tsearch2.tsquery

How can we work around that? Thanks for any help

Sincerely yours
Alexander Presber

#2Oleg Bartunov
oleg@sai.msu.su
In reply to: Alexander Presber (#1)
Re: Tsearch2: casting text to tsquery

On Wed, 16 Nov 2005, Alexander Presber wrote:

Hello,

I have a question that arose while using tsearch on a large database of book
information.

In order to inject unstemmed + stemmed versions of searchstrings into a query
we want to cast an expression of type text to tsquery.
Unfortunately

SELECT 'word'::tsquery

(where the literal 'word' is of type 'unknown' seemingly) works just fine
while e.g.

SELECT ('word' || '&fullword')::tsquery

or, simpler

SELECT 'word&fullword'::text::tsquery

gives

ERROR: cannot cast type text to tsearch2.tsquery

How can we work around that? Thanks for any help

no workaround needed. to_tsquery provides everything you need. If you
want fancy-shmancy solution you could always write wrapper around tsquery, but
I doubt you enter queries by hand, so why do you bothering ?

Sincerely yours
Alexander Presber

---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83

#3Alexander Presber
aljoscha@weisshuhn.de
In reply to: Oleg Bartunov (#2)
Re: Tsearch2: casting text to tsquery

Am 16.11.2005 um 13:52 schrieb Oleg Bartunov:

On Wed, 16 Nov 2005, Alexander Presber wrote:

Hello,

I have a question that arose while using tsearch on a large
database of book information.

In order to inject unstemmed + stemmed versions of searchstrings
into a query we want to cast an expression of type text to tsquery.
Unfortunately

SELECT 'word'::tsquery

(where the literal 'word' is of type 'unknown' seemingly) works
just fine while e.g.

SELECT ('word' || '&fullword')::tsquery

or, simpler

SELECT 'word&fullword'::text::tsquery

gives

ERROR: cannot cast type text to tsearch2.tsquery

How can we work around that? Thanks for any help

no workaround needed. to_tsquery provides everything you need. If
you want fancy-shmancy solution you could always write wrapper
around tsquery, but
I doubt you enter queries by hand, so why do you bothering ?

No. No fancy-shmancy solution needed, just one that works.

I do not see a way to include both a stemmed and unstemmed version of
a string into a tsquery.
Can you give an example, please?

Thanks
Alex

P.S. I have read the documentation (twice.)

Show quoted text

Sincerely yours
Alexander Presber

---------------------------(end of
broadcast)---------------------------
TIP 6: explain analyze is your friend

Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83

#4Oleg Bartunov
oleg@sai.msu.su
In reply to: Alexander Presber (#3)
Re: Tsearch2: casting text to tsquery

On Wed, 16 Nov 2005, Alexander Presber wrote:

Am 16.11.2005 um 13:52 schrieb Oleg Bartunov:

On Wed, 16 Nov 2005, Alexander Presber wrote:

Hello,

I have a question that arose while using tsearch on a large database of
book information.

In order to inject unstemmed + stemmed versions of searchstrings into a
query we want to cast an expression of type text to tsquery.
Unfortunately

SELECT 'word'::tsquery

(where the literal 'word' is of type 'unknown' seemingly) works just fine
while e.g.

SELECT ('word' || '&fullword')::tsquery

or, simpler

SELECT 'word&fullword'::text::tsquery

gives

ERROR: cannot cast type text to tsearch2.tsquery

How can we work around that? Thanks for any help

no workaround needed. to_tsquery provides everything you need. If you want
fancy-shmancy solution you could always write wrapper around tsquery, but
I doubt you enter queries by hand, so why do you bothering ?

No. No fancy-shmancy solution needed, just one that works.

I do not see a way to include both a stemmed and unstemmed version of a
string into a tsquery.
Can you give an example, please?

This is quite different question and Teodor has already answered you -
use different configurations. But I'm wondering why do you need that.

Thanks
Alex

P.S. I have read the documentation (twice.)

Sincerely yours
Alexander Presber

---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
choose an index scan if your joining column's datatypes do not
match

Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83