Словарь должен определять функциональные отношения между словами и лексемами, иначе он не будет знать, какое слово возвращать при лексизировании. В вашем примере al
отображается на три различных значения, определяя многозначную функцию, а функция lexize не знает, что возвращать. Как показывает Магнус, вы можете лексизировать от собственных имен alan, albert, allen
до псевдонима al
.
Помните, однако, что смысл словаря FTS состоит не в том, чтобы выполнять преобразования как таковые, а в том, чтобы обеспечить эффективную индексацию по семантически релевантным словам. Это означает, что лексема не должна напоминать исходную запись в каком-либо языковом смысле. Хотя вы правы в том, что отношения «многие ко многим» невозможно определить, вам это действительно нужно? Например, чтобы разрешить ваш vin
пример:
vin vin
vincent vin
vincenzo vin
vinnie vin
но вы также можете сделать это:
vin grob
vincent grob
vincenzo grob
vinnie grob
и получите тот же эффект (хотя, почему вы хотите, это другая история).
Таким образом, если вы проанализируете документ, скажем, с 11 версиями имени Vincent, тогда функция to_tsvector
вернет vin:11
в первом случае и grob:11
во втором.