Предотвратить появление имен собственных в PostgreSQL?

Стремясь объединять токены в лексемы, PostgreSQL Full Text Поисковик также сокращает имена собственные. Например:

essais=> select to_tsquery('english', 'bortzmeyer');
to_tsquery 
------------
'bortzmey'

essais=> select to_tsquery('english', 'balling');
to_tsquery 
------------
'ball'
(1 row)

По крайней мере, для первого, я уверен, что его нет в английском словаре! Каков наилучший способ избежать этой ложной основы?


person bortzmeyer    schedule 09.12.2008    source источник
comment
Я предполагаю, что это предыдущий шаг, разделение документов на токены, которые делают это, поскольку это пахнет использованием алгоритма, а не словаря.   -  person Paul Tomblin    schedule 10.12.2008
comment
Вы можете использовать «простой» словарь, чтобы избежать ошибок. select to_tsquery('simple', 'bortzmeyer'); и select to_tsquery('simple', 'balling');.   -  person davmor    schedule 24.04.2017


Ответы (2)


Смысл алгоритмов определения основы не в том, чтобы свести каждое слово к его правильной основе; цель состоит в том, чтобы привести слова, которые похожи, к общей корневой форме. Как правило, цель состоит не в том, чтобы получить слово, которое может быть представлено пользователю: даже если «balling» и «ball» оба дадут «kjebnkkekaa», алгоритм верен, потому что он по-прежнему рассматривает «balling» и «ball» как общие понятия. тоже самое.

Также имейте в виду, что ни один алгоритм стемминга не является абсолютно идеальным, для получения дополнительной информации найдите алгоритм стемминга Портера.

person Jasper Bekkers    schedule 09.12.2008

Это связано со стеммером Snowball, как описано здесь. По сути, вы захотите отключить стеммер Snowball и использовать только iSpell или один из других словарей, но это также снизит эффективность стемминга для слов, которых нет в словарях.

person codelogic    schedule 09.12.2008