F.18. dict_xsyn — пример синонимического словаря полнотекстового поиска#
F.18. dict_xsyn — пример синонимического словаря полнотекстового поиска #
dict_xsyn (Расширенный синонимический словарь) - это пример шаблона дополнительного словаря для полнотекстового поиска. Этот тип словаря заменяет слова группами их синонимов, что позволяет искать слово с использованием любого из его синонимов.
F.18.1. Конфигурация #
Словарь dict_xsyn принимает следующие параметры:
matchorigконтролирует, принимается ли исходное слово словарем. По умолчанию значениеtrue.matchsynonymsуправляет тем, принимаются ли синонимы словарем. По умолчанию значениеfalse.keeporigконтролирует, включается ли исходное слово в вывод словаря. По умолчанию значениеtrue.keepsynonymsуправляет включением синонимов в вывод словаря. По умолчанию значениеtrue.rules- это базовое имя файла, содержащего список синонимов. Этот файл должен быть сохранен в$SHAREDIR/tsearch_data/(где$SHAREDIRозначает общий каталог установки Tantor SE-1C). Его имя должно заканчиваться на.rules(который не должен включаться в параметрrules).
Файл правил имеет следующий формат:
Каждая строка представляет собой группу синонимов для одного слова, которое указывается первым в строке. Синонимы разделяются пробелами, таким образом:
word syn1 syn2 syn3
Острый знак (
#) является разделителем комментариев. Он может появляться в любом месте в строке. Остаток строки будет прне указан.
Посмотрите на файл xsyn_sample.rules, который установлен в $SHAREDIR/tsearch_data/, для примера.
F.18.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;