Postgres - статьи



              

Что надо знать о словарях - часть 2


thesaurus - шаблон для создания словарей, подобных словарю synonym, но с поддержкой фраз и нормализации слов. Покажем на примере астрономического тезауруса:

cat tz_astro.txt

supernovae stars : sn crab nebulae : crab

Далее, мы создаем словарь tz_astro и кроме файла с синонимами указываем словарь, который будет использоваться для нормализации слов, так что 'supernovae stars' и 'supernovae star' будут опознанны как 'sn'.

apod=# CREATE FULLTEXT DICTIONARY tz_astro OPTION 'DictFile="tz_astro.txt", Dictionary="en_stem"' LIKE thesaurus_template;

Далее, мы указываем, что английские слова будут обрабатываться сначала астрономическим тезаурусом.

apod=# ALTER FULLTEXT MAPPING ON russian_utf8 FOR lword,lhword,lpart_hword WITH tz_astro,en_stem;

Теперь тестируем:

apod=# select plainto_tsquery('great supernovae stars'); plainto_tsquery ----------------- 'great' & 'sn' apod=# select plainto_tsquery('great supernovae star'); plainto_tsquery ----------------- 'great' & 'sn'

3) Тестировать словари можно с помощью функции lexize

=# select lexize('en_stem', 'stars'); lexize -------- {star}

=# select lexize('en_stem', 'a'); lexize -------- {}

4) Словари можно добавлять в систему, см. пример [FTSBOOKAPPC]




Содержание  Назад  Вперед