F.17. dict_xsyn â пÑÐ¸Ð¼ÐµÑ ÑловаÑÑ ÑекÑÑового поиÑка Ñинонимов #
ÐодÑÐ»Ñ dict_xsyn (Extended Synonym Dictionary, ÑаÑÑиÑеннÑй ÑловаÑÑ Ñинонимов) пÑедÑÑавлÑÐµÑ Ñобой пÑÐ¸Ð¼ÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑного Ñаблона ÑловаÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾ÑекÑÑового поиÑка. ÐÑÐ¾Ñ ÑловаÑÑ Ð·Ð°Ð¼ÐµÐ½ÑÐµÑ Ñлова гÑÑппами иÑ
Ñинонимов, ÑÑо позволÑÐµÑ Ð½Ð°Ñ
одиÑÑ Ñлово по Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð¸Ð· его Ñинонимов.
F.17.1. ÐонÑигÑÑиÑование #
СловаÑÑ dict_xsyn пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑледÑÑÑие паÑамеÑÑÑ:
ÐаÑамеÑÑ
matchorigопÑеделÑеÑ, бÑÐ´ÐµÑ Ð»Ð¸ ÑловаÑÑ Ð¿ÑинимаÑÑ Ð¸Ð·Ð½Ð°ÑалÑное Ñлово. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½ вклÑÑÑн (Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñениеtrue).ÐаÑамеÑÑ
matchsynonymsопÑеделÑеÑ, бÑÐ´ÐµÑ Ð»Ð¸ ÑловаÑÑ Ð¿ÑинимаÑÑ ÑинонимÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½ оÑклÑÑÑн (Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñениеfalse).ÐаÑамеÑÑ
keeporigопÑеделÑеÑ, бÑÐ´ÐµÑ Ð»Ð¸ иÑÑ Ð¾Ð´Ð½Ð¾Ðµ Ñлово вклÑÑаÑÑÑÑ Ð² вÑвод ÑловаÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½ вклÑÑÑн (Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñениеtrue).ÐаÑамеÑÑ
keepsynonymsопÑеделÑеÑ, бÑдÑÑ Ð»Ð¸ в вÑвод ÑловаÑÑ Ð²ÐºÐ»ÑÑаÑÑÑÑ ÑинонимÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½ вклÑÑÑн (Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñениеtrue).ÐаÑамеÑÑ
rulesзадаÑÑ Ð±Ð°Ð·Ð¾Ð²Ð¾Ðµ Ð¸Ð¼Ñ Ñайла Ñо ÑпиÑком Ñинонимов. ÐÑÐ¾Ñ Ñайл должен Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑÑ Ð² каÑалоге$SHAREDIR/tsearch_data/(где под$SHAREDIRпонимаеÑÑÑ ÐºÐ°Ñалог Ñ Ð¾Ð±Ñими даннÑми инÑÑаллÑÑии Postgres Pro). ÐÐ¼Ñ Ñайла должно заканÑиваÑÑÑÑ ÑаÑÑиÑением.rules(коÑоÑое не нÑжно ÑказÑваÑÑ Ð² паÑамеÑÑеrules).
Файл пÑавил Ð¸Ð¼ÐµÐµÑ ÑледÑÑÑий ÑоÑмаÑ:
ÐÐ°Ð¶Ð´Ð°Ñ ÑÑÑока пÑедÑÑавлÑÐµÑ Ð³ÑÑÐ¿Ð¿Ñ Ñинонимов Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñлова, коÑоÑое задаÑÑÑÑ Ð¿ÐµÑвÑм в ÑÑой ÑÑÑоке. Ð¡Ð¸Ð¼Ð²Ð¾Ð»Ñ ÑазделÑÑÑÑÑ Ð¿ÑобелÑнÑми Ñимволами, Ñак ÑÑо ÑÑÑока вÑглÑÐ´Ð¸Ñ Ñак:
word syn1 syn2 syn3
Символ ÑеÑÑÑки (
#) обознаÑÐ°ÐµÑ Ð½Ð°Ñало комменÑаÑиÑ. Ðн Ð¼Ð¾Ð¶ÐµÑ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑÑ Ð² лÑбом меÑÑе ÑÑÑоки. СледÑÑÑÐ°Ñ Ð·Ð° ним ÑаÑÑÑ ÑÑÑоки игноÑиÑÑеÑÑÑ.
ÐÑÐ¸Ð¼ÐµÑ ÑловаÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ найÑи в Ñайле xsyn_sample.rules, ÑÑÑанавливаемом в $SHAREDIR/tsearch_data/.
F.17.2. ÐÑполÑзование #
ÐÑи ÑÑÑановке ÑаÑÑиÑÐµÐ½Ð¸Ñ dict_xsyn в базе ÑоздаÑÑÑÑ Ñаблон ÑекÑÑового поиÑка xsyn_template и ÑловаÑÑ xsyn на его базе, Ñ Ð¿Ð°ÑамеÑÑами по ÑмолÑаниÑ. ÐÑ Ð¼Ð¾Ð¶ÐµÑе измениÑÑ Ð¿Ð°ÑамеÑÑÑ ÑловаÑÑ, напÑÐ¸Ð¼ÐµÑ Ñак:
mydb# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=false); ALTER TEXT SEARCH DICTIONARY
или ÑоздаÑÑ Ð½Ð¾Ð²Ñе ÑловаÑи на базе ÑÑого Ñаблона.
ÐÑоÑеÑÑиÑоваÑÑ ÑÑÐ¾Ñ ÑловаÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ Ñак:
mydb=# SELECT ts_lexize('xsyn', 'word');
ts_lexize
-----------------------
{syn1,syn2,syn3}
mydb# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=true);
ALTER TEXT SEARCH DICTIONARY
mydb=# SELECT ts_lexize('xsyn', 'word');
ts_lexize
-----------------------
{word,syn1,syn2,syn3}
mydb# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=false, MATCHSYNONYMS=true);
ALTER TEXT SEARCH DICTIONARY
mydb=# SELECT ts_lexize('xsyn', 'syn1');
ts_lexize
-----------------------
{syn1,syn2,syn3}
mydb# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=true, MATCHORIG=false, KEEPSYNONYMS=false);
ALTER TEXT SEARCH DICTIONARY
mydb=# SELECT ts_lexize('xsyn', 'syn1');
ts_lexize
-----------------------
{word}Ðо Ð´Ð»Ñ Ð¿ÑакÑиÑеÑкого пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ нÑжно вклÑÑиÑÑ Ð² конÑигÑÑаÑÐ¸Ñ ÑекÑÑового поиÑка, как опиÑано в Ðлаве 12. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð²ÑглÑдеÑÑ Ð¿ÑимеÑно Ñак:
ALTER TEXT SEARCH CONFIGURATION english
ALTER MAPPING FOR word, asciiword WITH xsyn, english_stem;