| ÐокÑменÑаÑÐ¸Ñ Ð¿Ð¾ PostgreSQL 9.4.1 | |||
|---|---|---|---|
| ÐÑед. | УÑÐ¾Ð²ÐµÐ½Ñ Ð²ÑÑе | Ðлава 9. ФÑнкÑии и опеÑаÑоÑÑ | След. |
9.13. ФÑнкÑии и опеÑаÑоÑÑ ÑекÑÑового поиÑка
РТаблиÑе 9-37, ТаблиÑе 9-38 и ТаблиÑе 9-39 ÑобÑÐ°Ð½Ñ Ð²Ñе ÑÑÑеÑÑвÑÑÑие ÑÑнкÑии и опеÑаÑоÑÑ, пÑедназнаÑеннÑе Ð´Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾ÑекÑÑового поиÑка. Ðо вÑÐµÑ Ð´ÐµÑалÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑи полноÑекÑÑового поиÑка в PostgreSQL опиÑÐ°Ð½Ñ Ð² Ðлаве 12.
ТаблиÑа 9-37. ÐпеÑаÑоÑÑ ÑекÑÑового поиÑка
| ÐпеÑаÑÐ¾Ñ | ÐпиÑание | ÐÑÐ¸Ð¼ÐµÑ | РезÑлÑÑÐ°Ñ |
|---|---|---|---|
| @@ | tsvector ÑооÑвеÑÑÑвÑÐµÑ tsquery ? | to_tsvector('fat cats ate rats') @@ to_tsquery('cat & rat') | t |
| @@@ | ÑÑÑаÑевÑий Ñиноним Ð´Ð»Ñ @@ | to_tsvector('fat cats ate rats') @@@ to_tsquery('cat & rat') | t |
| || | обÑединÑÐµÑ Ð´Ð²Ð° знаÑÐµÐ½Ð¸Ñ tsvector | 'a:1 b:2'::tsvector || 'c:1 d:2 b:3'::tsvector | 'a':1 'b':2,5 'c':3 'd':4 |
| && | логиÑеÑкое Ð (AND) двÑÑ Ð·Ð°Ð¿ÑоÑов tsquery | 'fat | rat'::tsquery && 'cat'::tsquery | ( 'fat' | 'rat' ) & 'cat' |
| || | логиÑеÑкое ÐÐÐ (OR) двÑÑ Ð·Ð°Ð¿ÑоÑов tsquery | 'fat | rat'::tsquery || 'cat'::tsquery | ( 'fat' | 'rat' ) | 'cat' |
| !! | оÑÑиÑание запÑоÑа tsquery | !! 'cat'::tsquery | !'cat' |
| @> | запÑÐ¾Ñ tsquery вклÑÑÐ°ÐµÑ Ð´ÑÑгой? | 'cat'::tsquery @> 'cat & rat'::tsquery | f |
| <@ | запÑÐ¾Ñ tsquery вклÑÑÑн в дÑÑгой? | 'cat'::tsquery <@ 'cat & rat'::tsquery | t |
ÐамеÑание: ÐпеÑаÑоÑÑ Ð²ÐºÐ»ÑÑÐµÐ½Ð¸Ñ tsquery ÑаÑÑмаÑÑиваÑÑ ÑолÑко лекÑÐµÐ¼Ñ Ð´Ð²ÑÑ Ð·Ð°Ð¿ÑоÑов, игноÑиÑÑÑ Ð¾Ð¿ÐµÑаÑоÑÑ Ð¸Ñ ÑоÑеÑаниÑ.
Рдополнение к опеÑаÑоÑам, пеÑеÑиÑленнÑм в ÑÑой ÑаблиÑе, Ð´Ð»Ñ Ñипов tsvector и tsquery опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð¾Ð±ÑÑнÑе опеÑаÑоÑÑ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ B-деÑева (=, < и Ñ. д.). Ðни не оÑÐµÐ½Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка, но позволÑÑÑ, в ÑаÑÑноÑÑи, ÑоздаваÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½Ð¾Ðº ÑÑÐ¸Ñ Ñипов.
ТаблиÑа 9-38. ФÑнкÑии ÑекÑÑового поиÑка
| ФÑнкÑÐ¸Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание | ÐÑÐ¸Ð¼ÐµÑ | РезÑлÑÑÐ°Ñ |
|---|---|---|---|---|
get_current_ts_config() | regconfig | полÑÑÐ°ÐµÑ ÐºÐ¾Ð½ÑигÑÑаÑÐ¸Ñ ÑекÑÑового поиÑка по ÑмолÑÐ°Ð½Ð¸Ñ | get_current_ts_config() | english |
length(tsvector) | integer | ÑиÑло лекÑем в знаÑении tsvector | length('fat:2,4 cat:3 rat:5A'::tsvector) | 3 |
numnode(tsquery) | integer | ÑиÑло лекÑем и опеÑаÑоÑов в запÑоÑе tsquery | numnode('(fat & rat) | cat'::tsquery) | 5 |
plainto_tsquery([конÑигÑÑаÑÐ¸Ñ regconfig ,] запÑÐ¾Ñ text) | tsquery | вÑдаÑÑ Ð·Ð½Ð°Ñение tsquery, игноÑиÑÑÑ Ð¿ÑнкÑÑаÑÐ¸Ñ | plainto_tsquery('english', 'The Fat Rats') | 'fat' & 'rat' |
querytree(запÑÐ¾Ñ tsquery) | text | полÑÑÐ°ÐµÑ Ð¸Ð½Ð´ÐµÐºÑиÑÑемÑÑ ÑаÑÑÑ Ð·Ð°Ð¿ÑоÑа tsquery | querytree('foo & ! bar'::tsquery) | 'foo' |
setweight(tsvector, "char") | tsvector | назнаÑÐ°ÐµÑ Ð²ÐµÑа ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ ÑлеменÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ tsvector | setweight('fat:2,4 cat:3 rat:5B'::tsvector, 'A') | 'cat':3A 'fat':2A,4A 'rat':5A |
strip(tsvector) | tsvector | ÑбиÑÐ°ÐµÑ Ð¿Ð¾Ð·Ð¸Ñии и веÑа из знаÑÐµÐ½Ð¸Ñ tsvector | strip('fat:2,4 cat:3 rat:5A'::tsvector) | 'cat' 'fat' 'rat' |
to_tsquery([конÑигÑÑаÑÐ¸Ñ regconfig ,] запÑÐ¾Ñ text) | tsquery | ноÑмализÑÐµÑ Ñлова и пеÑÐµÐ²Ð¾Ð´Ð¸Ñ Ð¸Ñ Ð² tsquery | to_tsquery('english', 'The & Fat & Rats') | 'fat' & 'rat' |
to_tsvector([конÑигÑÑаÑÐ¸Ñ regconfig ,] докÑÐ¼ÐµÐ½Ñ text) | tsvector | ÑокÑаÑÐ°ÐµÑ ÑекÑÑ Ð´Ð¾ÐºÑменÑа до знаÑÐµÐ½Ð¸Ñ tsvector | to_tsvector('english', 'The Fat Rats') | 'fat':2 'rat':3 |
ts_headline([конÑигÑÑаÑÐ¸Ñ regconfig,] докÑÐ¼ÐµÐ½Ñ text, запÑÐ¾Ñ tsquery [, паÑамеÑÑÑ text]) | text | вÑÐ²Ð¾Ð´Ð¸Ñ ÑÑагменÑ, ÑооÑвеÑÑÑвÑÑÑий запÑоÑÑ | ts_headline('x y z', 'z'::tsquery) | x y <b>z</b> |
ts_rank([веÑа float4[],] векÑÐ¾Ñ tsvector, запÑÐ¾Ñ tsquery [, ноÑмализаÑÐ¸Ñ integer]) | float4 | вÑÑиÑлÑÐµÑ Ñанг докÑменÑа по оÑноÑÐµÐ½Ð¸Ñ Ðº запÑоÑÑ | ts_rank(textsearch, query) | 0.818 |
ts_rank_cd([веÑа float4[],] векÑÐ¾Ñ tsvector, запÑÐ¾Ñ tsquery [, ноÑмализаÑÐ¸Ñ integer]) | float4 | вÑÑиÑлÑÐµÑ Ñанг докÑменÑа по оÑноÑÐµÐ½Ð¸Ñ Ðº запÑоÑÑ, иÑполÑзÑÑ Ð¿Ð»Ð¾ÑноÑÑÑ Ð¿Ð¾ÐºÑÑÑÐ¸Ñ (CDR) | ts_rank_cd('{0.1, 0.2, 0.4, 1.0}', textsearch, query) | 2.01317 |
ts_rewrite(запÑÐ¾Ñ tsquery, ÑÐµÐ»Ñ tsquery, замена tsquery) | tsquery | заменÑÐµÑ Ñелевой подзапÑÐ¾Ñ Ð¿Ð¾Ð´ÑÑановкой | ts_rewrite('a & b'::tsquery, 'a'::tsquery, 'foo|bar'::tsquery) | 'b' & ( 'foo' | 'bar' ) |
ts_rewrite(запÑÐ¾Ñ tsquery, вÑбоÑка text) | tsquery | заменÑÐµÑ ÑлеменÑÑ Ð·Ð°Ð¿ÑоÑа, вÑбиÑÐ°Ñ Ñели и подÑÑановки командой SELECT | SELECT ts_rewrite('a & b'::tsquery, 'SELECT t,s FROM aliases') | 'b' & ( 'foo' | 'bar' ) |
tsvector_update_trigger() | trigger | ÑÑиггеÑÐ½Ð°Ñ ÑÑнкÑÐ¸Ñ Ð´Ð»Ñ Ð°Ð²ÑомаÑиÑеÑкого Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ Ñипа tsvector | CREATE TRIGGER ... tsvector_update_trigger(tsvcol, 'pg_catalog.âswedish', title, body) | |
tsvector_update_trigger_column() | trigger | ÑÑиггеÑÐ½Ð°Ñ ÑÑнкÑÐ¸Ñ Ð´Ð»Ñ Ð°Ð²ÑомаÑиÑеÑкого Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ Ñипа tsvector | CREATE TRIGGER ... tsvector_update_trigger_column(tsvcol, configcol, title, body) |
ÐамеÑание: ÐÑе ÑÑнкÑии ÑекÑÑового поиÑка, пÑинимаÑÑие необÑзаÑелÑнÑй аÑгÑÐ¼ÐµÐ½Ñ regconfig, бÑдÑÑ Ð¸ÑполÑзоваÑÑ ÐºÐ¾Ð½ÑигÑÑаÑиÑ, ÑказаннÑÑ Ð² паÑамеÑÑе default_text_search_config, когда ÑÑÐ¾Ñ Ð°ÑгÑÐ¼ÐµÐ½Ñ Ð¾Ð¿ÑÑен.
ФÑнкÑии в ТаблиÑе 9-39 пеÑеÑиÑÐ»ÐµÐ½Ñ Ð¾ÑделÑно, Ñак как они не оÑÐµÐ½Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ Ð² ÑÑадиÑионнÑÑ Ð¾Ð¿ÐµÑаÑиÑÑ Ð¿Ð¾Ð¸Ñка. Ðни пÑедназнаÑÐµÐ½Ñ Ð² оÑновном Ð´Ð»Ñ ÑазÑабоÑки и оÑладки новÑÑ ÐºÐ¾Ð½ÑигÑÑаÑий ÑекÑÑового поиÑка.
ТаблиÑа 9-39. ФÑнкÑии оÑладки ÑекÑÑового поиÑка
| ФÑнкÑÐ¸Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание | ÐÑÐ¸Ð¼ÐµÑ | РезÑлÑÑÐ°Ñ |
|---|---|---|---|---|
ts_debug([конÑигÑÑаÑÐ¸Ñ regconfig,] докÑÐ¼ÐµÐ½Ñ text, OUT пÑевдоним text, OUT опиÑание text, OUT ÑÑÐ°Ð³Ð¼ÐµÐ½Ñ text, OUT ÑловаÑи regdictionary[], OUT ÑловаÑÑ regdictionary, OUT лекÑÐµÐ¼Ñ text[]) | setof record | пÑовеÑÑÐµÑ ÐºÐ¾Ð½ÑигÑÑаÑÐ¸Ñ | ts_debug('english', 'The Brightest supernovaes') | (asciiword,"Word, all ASCII",The,{âenglish_stemâ},âenglish_stem,{}) ... |
ts_lexize(ÑловаÑÑ regdictionary, ÑÑÐ°Ð³Ð¼ÐµÐ½Ñ text) | text[] | пÑовеÑÑÐµÑ ÑловаÑÑ | ts_lexize('english_stem', 'stars') | {star} |
ts_parse(имÑ_анализаÑоÑа text, докÑÐ¼ÐµÐ½Ñ text, OUT код_ÑÑагменÑа integer, OUT ÑÑÐ°Ð³Ð¼ÐµÐ½Ñ text) | setof record | пÑовеÑÑÐµÑ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°ÑÐ¾Ñ | ts_parse('default', 'foo - bar') | (1,foo) ... |
ts_parse(oid_анализаÑоÑа oid, докÑÐ¼ÐµÐ½Ñ text, OUT код_ÑÑагменÑа integer, OUT ÑÑÐ°Ð³Ð¼ÐµÐ½Ñ text) | setof record | пÑовеÑÑÐµÑ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°ÑÐ¾Ñ | ts_parse(3722, 'foo - bar') | (1,foo) ... |
ts_token_type(имÑ_анализаÑоÑа text, OUT код_ÑÑагменÑа integer, OUT пÑевдоним text, OUT опиÑание text) | setof record | полÑÑÐ°ÐµÑ ÑÐ¸Ð¿Ñ ÑÑагменÑов, опÑеделÑннÑе анализаÑоÑом | ts_token_type('default') | (1,asciiword,"Word, all ASCII") ... |
ts_token_type(oid_анализаÑоÑа oid, OUT код_ÑÑагменÑа integer, OUT пÑевдоним text, OUT опиÑание text) | setof record | полÑÑÐ°ÐµÑ ÑÐ¸Ð¿Ñ ÑÑагменÑов, опÑеделÑннÑе анализаÑоÑом | ts_token_type(3722) | (1,asciiword,"Word, all ASCII") ... |
ts_stat(sql_запÑÐ¾Ñ text, [веÑа text,] OUT Ñлово text, OUT ÑиÑло_док integer, OUT ÑиÑло_вÑ
ожд integer) | setof record | полÑÑÐ°ÐµÑ ÑÑаÑиÑÑÐ¸ÐºÑ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ tsvector | ts_stat('SELECT vector from apod') | (foo,10,15) ... |
| ÐÑед. | ÐаÑало | След. |
| ФÑнкÑии и опеÑаÑоÑÑ Ð´Ð»Ñ ÑабоÑÑ Ñ ÑеÑевÑми адÑеÑами | УÑÐ¾Ð²ÐµÐ½Ñ Ð²ÑÑе | XML-ÑÑнкÑии |