| Michael Fuhr 2006-01-23, 11:24 am |
| On Mon, Jan 23, 2006 at 03:05:07PM +0530, Praveen Kumar (TUV) wrote:
> I have installed Tsearch-Module for full text indexing .But when
> I search text using gist(idxFTI) index on table I also found all
> data which have same accent.Example
> 1.If I try search for MANI word it also search for MANY word.
> 2.If I try search for ANDY word it also search for ANDI word.
> Please can you tell me how to avoid this problem ? If i want to
> search text MANI it should search only for MANI not MANY.
Your tsearch2 configuration is turning the words "many" and "andy"
into the lexemes "mani" and "andi", like this:
test=> SELECT * FROM ts_debug('many andy');
ts_name | tok_type | description | token | dict_name | tsvector
---------+----------+-------------+-------+-----------+----------
default | lword | Latin word | many | {en_stem} | 'mani'
default | lword | Latin word | andy | {en_stem} | 'andi'
(2 rows)
To learn how to change that see "Parsing and Lexing" and "Configurations"
in the tsearch2 documentation:
[url]http://www.sai.msu.su/~megera/postgres/gist/tsearch/V2/docs/tsearch2-guide. html#parsing_lexing[
/url]
[url]http://www.sai.msu.su/~megera/postgres/gist/tsearch/V2/docs/tsearch2-ref. html#configurations[
/url]
Another approach is to think of tsearch2 as returning "might match"
rows and add another restriction to find the definite matches:
test=> SELECT * FROM foo
test-> WHERE idxcontent @@ to_tsquery('many');
id | content | idxcontent
----+---------+------------
1 | many | 'mani':1
2 | mani | 'mani':1
(2 rows)
test=> SELECT * FROM foo
test-> WHERE idxcontent @@ to_tsquery('many') AND content ~* 'many';
id | content | idxcontent
----+---------+------------
1 | many | 'mani':1
(1 row)
--
Michael Fuhr
---------------------------(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
|