mirror of
https://github.com/postgres/postgres.git
synced 2025-08-08 06:02:22 +03:00
Add matchorig, matchsynonyms, and keepsynonyms options to contrib/dict_xsyn.
Sergey Karpov
This commit is contained in:
@@ -5,10 +5,76 @@
|
||||
SET client_min_messages = warning;
|
||||
\set ECHO none
|
||||
RESET client_min_messages;
|
||||
--configuration
|
||||
ALTER TEXT SEARCH DICTIONARY xsyn (RULES='xsyn_sample', KEEPORIG=false);
|
||||
-- default configuration - match first word and return it among with all synonyms
|
||||
ALTER TEXT SEARCH DICTIONARY xsyn (RULES='xsyn_sample', KEEPORIG=true, MATCHORIG=true, KEEPSYNONYMS=true, MATCHSYNONYMS=false);
|
||||
--lexize
|
||||
SELECT ts_lexize('xsyn', 'supernova');
|
||||
ts_lexize
|
||||
--------------------------
|
||||
{supernova,sn,sne,1987a}
|
||||
(1 row)
|
||||
|
||||
SELECT ts_lexize('xsyn', 'sn');
|
||||
ts_lexize
|
||||
-----------
|
||||
|
||||
(1 row)
|
||||
|
||||
SELECT ts_lexize('xsyn', 'grb');
|
||||
ts_lexize
|
||||
-----------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- the same, but return only synonyms
|
||||
ALTER TEXT SEARCH DICTIONARY xsyn (RULES='xsyn_sample', KEEPORIG=false, MATCHORIG=true, KEEPSYNONYMS=true, MATCHSYNONYMS=false);
|
||||
SELECT ts_lexize('xsyn', 'supernova');
|
||||
ts_lexize
|
||||
----------------
|
||||
{sn,sne,1987a}
|
||||
(1 row)
|
||||
|
||||
SELECT ts_lexize('xsyn', 'sn');
|
||||
ts_lexize
|
||||
-----------
|
||||
|
||||
(1 row)
|
||||
|
||||
SELECT ts_lexize('xsyn', 'grb');
|
||||
ts_lexize
|
||||
-----------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- match any word and return all words
|
||||
ALTER TEXT SEARCH DICTIONARY xsyn (RULES='xsyn_sample', KEEPORIG=true, MATCHORIG=true, KEEPSYNONYMS=true, MATCHSYNONYMS=true);
|
||||
SELECT ts_lexize('xsyn', 'supernova');
|
||||
ts_lexize
|
||||
--------------------------
|
||||
{supernova,sn,sne,1987a}
|
||||
(1 row)
|
||||
|
||||
SELECT ts_lexize('xsyn', 'sn');
|
||||
ts_lexize
|
||||
--------------------------
|
||||
{supernova,sn,sne,1987a}
|
||||
(1 row)
|
||||
|
||||
SELECT ts_lexize('xsyn', 'grb');
|
||||
ts_lexize
|
||||
-----------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- match any word and return all words except first one
|
||||
ALTER TEXT SEARCH DICTIONARY xsyn (RULES='xsyn_sample', KEEPORIG=false, MATCHORIG=true, KEEPSYNONYMS=true, MATCHSYNONYMS=true);
|
||||
SELECT ts_lexize('xsyn', 'supernova');
|
||||
ts_lexize
|
||||
----------------
|
||||
{sn,sne,1987a}
|
||||
(1 row)
|
||||
|
||||
SELECT ts_lexize('xsyn', 'sn');
|
||||
ts_lexize
|
||||
----------------
|
||||
{sn,sne,1987a}
|
||||
@@ -20,3 +86,63 @@ SELECT ts_lexize('xsyn', 'grb');
|
||||
|
||||
(1 row)
|
||||
|
||||
-- match any synonym but not first word, and return first word instead
|
||||
ALTER TEXT SEARCH DICTIONARY xsyn (RULES='xsyn_sample', KEEPORIG=true, MATCHORIG=false, KEEPSYNONYMS=false, MATCHSYNONYMS=true);
|
||||
SELECT ts_lexize('xsyn', 'supernova');
|
||||
ts_lexize
|
||||
-----------
|
||||
|
||||
(1 row)
|
||||
|
||||
SELECT ts_lexize('xsyn', 'sn');
|
||||
ts_lexize
|
||||
-------------
|
||||
{supernova}
|
||||
(1 row)
|
||||
|
||||
SELECT ts_lexize('xsyn', 'grb');
|
||||
ts_lexize
|
||||
-----------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- do not match or return anything
|
||||
ALTER TEXT SEARCH DICTIONARY xsyn (RULES='xsyn_sample', KEEPORIG=false, MATCHORIG=false, KEEPSYNONYMS=false, MATCHSYNONYMS=false);
|
||||
SELECT ts_lexize('xsyn', 'supernova');
|
||||
ts_lexize
|
||||
-----------
|
||||
|
||||
(1 row)
|
||||
|
||||
SELECT ts_lexize('xsyn', 'sn');
|
||||
ts_lexize
|
||||
-----------
|
||||
|
||||
(1 row)
|
||||
|
||||
SELECT ts_lexize('xsyn', 'grb');
|
||||
ts_lexize
|
||||
-----------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- match any word but return nothing
|
||||
ALTER TEXT SEARCH DICTIONARY xsyn (RULES='xsyn_sample', KEEPORIG=false, MATCHORIG=true, KEEPSYNONYMS=false, MATCHSYNONYMS=true);
|
||||
SELECT ts_lexize('xsyn', 'supernova');
|
||||
ts_lexize
|
||||
-----------
|
||||
{}
|
||||
(1 row)
|
||||
|
||||
SELECT ts_lexize('xsyn', 'sn');
|
||||
ts_lexize
|
||||
-----------
|
||||
{}
|
||||
(1 row)
|
||||
|
||||
SELECT ts_lexize('xsyn', 'grb');
|
||||
ts_lexize
|
||||
-----------
|
||||
|
||||
(1 row)
|
||||
|
||||
|
Reference in New Issue
Block a user