FTS wildcard and custom ispell dictionary problem

Started by darklowover 15 years ago1 messageshackers
Jump to latest
#1darklow
darklow@gmail.com

Hello,

 I am using PostgreSQL 8.4 full text search in following way:
 Custom FTS configuration called "dc2" with these dictionaries in
following order for asciihword token: latvian_ispell, english_stem,
russian_stem

 Latvian ispell dictionary contains words with different endings but
same meaning (latvian langiage specifics, plural words, etc)

 The problem starts when using wildcard :* to_tsquery syntax.

 For example. If i look for the word "kriev" i am automatically adding
wildcard using syntax:  to_tsquery('dc2', 'kriev:*');
By searching kriev:* FTS founds word "krievs" in latvian_ispell
dictionary which is totally okei.

SELECT * from ts_debug('dc2', 'kriev:*');
alias | description | token |
dictionaries | dictionary | lexemes
-----------+-----------------+-------+----------------------------------------------------------+----------------+----------
asciiword | Word, all ASCII | kriev |
{latvian_ispell,english_stem,russian_stem} | latvian_ispell | {krievs}
blank | Space symbols | :* | {}

If understand correctly now database uses not kriev:* but krievs:* for
following queries.
And here is the problem, data contains also word: Krievija, and in
this case search doesn't find it, because it looks for Krievs:* and
not Kriev:* anymore.

Is there any solution anone could suggest to get results by both
criterias - kriev:* (starting query) and krievs:* (founded in ispell
dict).
Only idea i had is to somehow combine two tsqueries one -
to_tsquery('dc2', 'kriev:*') and to_tsquery('english', 'kriev:*'); so
the search looks for both - kriev:* and krievs:* but anyway didnt
figured out any syntax i could use :(

Thanks