One expect true here, but result is dissapointing false
postgres=# select to_tsquery('ob_1','inferences') @@
to_tsvector('ob_1','inference');
?column?
----------
f
(1 row)
We can use ts_debug function to understand the problem
postgres=# select * from ts_debug('ob_1','inferences');
alias | description | token | dictionaries | dictionary | lexemes
-----------+-----------------+------------+-----------------------------+-------------+------------
asciiword | Word, all ASCII | inferences | {french_ispell,french_stem} | french_stem | {inferent}
(1 row)
postgres=# select * from ts_debug('ob_1','inference');
alias | description | token | dictionaries | dictionary | lexemes
-----------+-----------------+-----------+-----------------------------+---------------+-------------
asciiword | Word, all ASCII | inference | {french_ispell,french_stem} | french_ispell | {inference}
(1 row)
Now, we see that real problem is that french_ispell doesn't recognized plural form of word 'inference' (ispell and stemmer stem word 'inferences' differently, which is ok ).
What to do ? The best way is to teach ispell dictionary, the easiest way is to use synonym dictionary and put it first in the stack of dictionaries:
inferences inference
And don't forget to reindex !
btw, another way is to use ts_rewrite, so you don't need to reindex.