12.7. ÐÑÐ¸Ð¼ÐµÑ ÐºÐ¾Ð½ÑигÑÑаÑии #
ÐонÑигÑÑаÑÐ¸Ñ ÑекÑÑового поиÑка опÑеделÑÐµÑ Ð²ÑÑ, ÑÑо необÑ
одимо Ð´Ð»Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾ÐºÑменÑа в ÑоÑÐ¼Ð°Ñ tsvector: анализаÑоÑ, коÑоÑÑй бÑÐ´ÐµÑ ÑазбиваÑÑ ÑекÑÑ Ð½Ð° ÑÑагменÑÑ, и ÑловаÑи, коÑоÑÑе бÑдÑÑ Ð¿ÑеобÑазовÑваÑÑ ÑÑагменÑÑ Ð² лекÑемÑ. ÐÑи каждом вÑзове to_tsvector или to_tsquery обÑзаÑелÑно иÑполÑзÑеÑÑÑ ÐºÐ¾Ð½ÑигÑÑаÑÐ¸Ñ ÑекÑÑового поиÑка. РконÑигÑÑаÑии ÑеÑвеÑа еÑÑÑ Ð¿Ð°ÑамеÑÑ default_text_search_config, задаÑÑий Ð¸Ð¼Ñ ÐºÐ¾Ð½ÑигÑÑаÑии ÑекÑÑового поиÑка по ÑмолÑаниÑ, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ, когда пÑи вÑзове ÑÑнкÑий поиÑка ÑооÑвеÑÑÑвÑÑÑий аÑгÑÐ¼ÐµÐ½Ñ Ð½Ðµ опÑеделÑн. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ Ð² postgresql.conf или ÑÑÑановиÑÑ Ð² ÑамкаÑ
оÑделÑного ÑеанÑа Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SET.
Ð ÑиÑÑеме еÑÑÑ Ð½ÐµÑколÑко вÑÑÑоеннÑÑ ÐºÐ¾Ð½ÑигÑÑаÑий ÑекÑÑового поиÑка и Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе легко дополниÑÑ Ð¸Ñ Ñвоими. ÐÐ»Ñ ÑдобÑÑва ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð±ÑекÑами ÑекÑÑового поиÑка в PostgreSQL ÑÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ñ ÑооÑвеÑÑÑвÑÑÑие SQL-ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¸ ÑпеÑиалÑнÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð² psql, вÑводÑÑие инÑоÑмаÑÐ¸Ñ Ð¾Ð± ÑÑÐ¸Ñ Ð¾Ð±ÑекÑÐ°Ñ (Раздел 12.10).
РкаÑеÑÑве пÑимеÑа иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑÑиÑ
команд Ð¼Ñ Ñоздадим конÑигÑÑаÑÐ¸Ñ pg, взÑв за оÑÐ½Ð¾Ð²Ñ Ð²ÑÑÑоеннÑÑ ÐºÐ¾Ð½ÑигÑÑаÑÐ¸Ñ english:
CREATE TEXT SEARCH CONFIGURATION public.pg ( COPY = pg_catalog.english );
ÐÑ Ð±Ñдем иÑполÑзоваÑÑ ÑпиÑок Ñинонимов, ÑвÑзаннÑÑ
Ñ Postgres Pro, в Ñайле $SHAREDIR/tsearch_data/pg_dict.syn. ÐÑÐ¾Ñ Ñайл ÑодеÑÐ¶Ð¸Ñ ÑÑÑоки:
postgres pg pgsql pg postgresql pg
ÐÑ Ð¾Ð¿Ñеделим ÑловаÑÑ Ñинонимов ÑледÑÑÑим обÑазом:
CREATE TEXT SEARCH DICTIONARY pg_dict (
TEMPLATE = synonym,
SYNONYMS = pg_dict
); ÐаÑем Ð¼Ñ Ð·Ð°ÑегиÑÑÑиÑÑем ÑловаÑÑ Ispell english_ispell, Ñ ÐºÐ¾ÑоÑого еÑÑÑ ÑобÑÑвеннÑе ÑÐ°Ð¹Ð»Ñ ÐºÐ¾Ð½ÑигÑÑаÑии:
CREATE TEXT SEARCH DICTIONARY english_ispell (
TEMPLATE = ispell,
DictFile = english,
AffFile = english,
StopWords = english
); ТепеÑÑ Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ наÑÑÑоиÑÑ ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñлов в конÑигÑÑаÑии pg:
ALTER TEXT SEARCH CONFIGURATION pg
ALTER MAPPING FOR asciiword, asciihword, hword_asciipart,
word, hword, hword_part
WITH pg_dict, english_ispell, english_stem;ÐÑ ÑеÑили не индекÑиÑоваÑÑ Ð¸ не ÑÑиÑÑваÑÑ Ð¿Ñи поиÑке некоÑоÑÑе ÑÐ¸Ð¿Ñ ÑÑагменÑов, коÑоÑÑе не обÑабаÑÑваÑÑÑÑ Ð²ÑÑÑоенной конÑигÑÑаÑией:
ALTER TEXT SEARCH CONFIGURATION pg
DROP MAPPING FOR email, url, url_path, sfloat, float;ТепеÑÑ Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ пÑоÑеÑÑиÑоваÑÑ Ð½Ð°ÑÑ ÐºÐ¾Ð½ÑигÑÑаÑиÑ:
SELECT * FROM ts_debug('public.pg', '
Postgres Pro, the highly scalable, SQL compliant, open source
object-relational database management system, is now undergoing
beta testing of the next version of our software.
');Ð Ð½Ð°ÐºÐ¾Ð½ÐµÑ Ð¼Ñ Ð²ÑбиÑаем в ÑекÑÑем ÑеанÑе ÑÑÑ ÐºÐ¾Ð½ÑигÑÑаÑиÑ, ÑозданнÑÑ Ð² ÑÑ
еме public:
=> \dF List of text search configurations Schema | Name | Description ---------+------+------------- public | pg | SET default_text_search_config = 'public.pg'; SET SHOW default_text_search_config; default_text_search_config ---------------------------- public.pg