Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search archives
  Advanced Search

Re: FTS, ISPELL и Ё


  • From: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
  • To: "Александр В. Сизов" <subs(at)arpanet(dot)ru>
  • Cc: pgsql-ru-general(at)postgresql(dot)org
  • Subject: Re: FTS, ISPELL и Ё
  • Date: Mon, 15 Dec 2008 11:45:03 +0300 (MSK)
  • Message-id: <Pine.LNX.4.64.0812151129500.28443@sn.sai.msu.ru> <text/plain>

Александр, руководствуйтесь здравым смыслом - что проиндексируете, то и найдете. Никакой магии внутри у нас нет, все отдано здесь на откуп пользовательскому словарю. Если вы хотите различать 'е' и 'ё', то напишите
словарь-враппер (давно всем предлагаю) вокруг испелла, который опционально
возвращает нормализованные формы и/или оригинальное слово. Его вы используете
пи индексации, а при поиске одну из конфигураций - со словраем, который
понимает 'ё', который не понимает. Но обычно, просто используйте нечто вроде to_tsvector(translate(string,'ё','е')) и не будет никаких проблем.

Олег

Олег
On Mon, 15 Dec 2008, "Александр В. Сизов" wrote:

Hello, world!

Решил поэкспериментировать в FreeBSD6.3 под PostgreSQL 8.3.5 (+ICU) с FTS. В качестве словаря выбрал Ispell 0.99g5, собрал с поддержкой 'ё'. Сразу возникла проблема: 'самолёт' @@ 'самолет' = false. Ок, пересобрал без поддержки 'ё' => 'самолёт' @@ 'самолет' = false. Ок, собрал, распарсил, вырезал ё руками (ни в одной строчке не оставил 'ё') - 'самолёт' @@ 'самолет' = false, при этом 'самолёты', 'самолётами', ... нормально приводятся к каноническому виду (как???).
Привожу код:

-------------------------------------------------------- CUT
CREATE SCHEMA library;

CREATE TEXT SEARCH DICTIONARY library.ispell_ru (
  TEMPLATE  = ispell,
  DictFile  = ispell_ru,
  AffFile   = ispell_ru,
  StopWords = russian
);

CREATE TEXT SEARCH CONFIGURATION library.russian (
  COPY = russian
);

ALTER TEXT SEARCH CONFIGURATION library.russian
  ALTER MAPPING FOR hword, hword_part, word
      WITH library.ispell_ru, russian_stem;

ALTER TEXT SEARCH CONFIGURATION library.russian
  DROP MAPPING FOR
      email,
      file,
      float,
      host,
      sfloat,
      url,
      url_path,
      version;

-------------------------------------------------------- CUT

На время, чтобы на долго не застревать, написал функции, подменяющие ё->е в поиске и записи в БД, но хотелось бы понять и решить проблему...

WBR!



	Regards,
		Oleg
_____________________________________________________________
Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru),
Sternberg Astronomical Institute, Moscow University, Russia
Internet: oleg(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
phone: +007(495)939-16-83, +007(495)939-23-83


Home | Main Index | Thread Index

Privacy Policy | About PostgreSQL
Copyright © 1996 – 2012 PostgreSQL Global Development Group