Hi guys, I'm going to crazy about FTS with prefix agains email values on tsvector. Follow how to reproduce:
For the next tsvector:
=# select to_tsvector('user@xxxxxxxxxxx')
to_tsvector
----------------------
'user@xxxxxxxxxxx':1
I expects TRUE for all next tsqueryes:
select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('u:*');
select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('us:*');
select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('use:*');
select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user:*');
select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@:*');
select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@c:*');
select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@co:*');
select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@com:*');
select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@comp:*');
select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@compa:*');
select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@compan:*');
select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@company:*');
select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@company.:*');
select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@company.c:*');
select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@xxxxxxxxxx:*');
select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@xxxxxxxxxxx:*');
But NOT, there are some NOT expected and confusing me results:
=# select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('us:*');
?column?
----------
t
(1 row)
=# select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user:*');
?column?
----------
t
=# select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@:*');
?column?
----------
t
select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@comp:*');
?column?
----------
f <---- FALSE (I expects TRUE)
=# select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@company:*');
?column?
----------
f <---- FALSE (I expects TRUE)
=# select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@company.:*');
?column?
----------
f <---- FALSE (I expects TRUE)
=# select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@company.c:*');
?column?
----------
f <---- FALSE (I expects TRUE)
=# select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@xxxxxxxxxx:*');
?column?
----------
t <---- TRUE .... OOhhhhhHHH I'm going crazy!!!
=# select to_tsvector('user@xxxxxxxxxxx') @@ to_tsquery('user@xxxxxxxxxxx:*');
?column?
----------
t <---- TRUE ... Yes I'm crazy.
Please some ligths about it.
(I follow the official docs in http://www.postgresql.org/docs/9.1/interactive/textsearch.html for my knowledge)
Thx!