9.13. Функции и операторы текстового поиска

В Таблице 9.37, Таблице 9.38 и Таблице 9.39 собраны все существующие функции и операторы, предназначенные для полнотекстового поиска. Во всех деталях возможности полнотекстового поиска в Postgres Pro описаны в Главе 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 предшествует tsqueryto_tsquery('fat') <-> to_tsquery('rat')'fat' <-> 'rat'
@>запрос tsquery включает другой?'cat'::tsquery @> 'cat & rat'::tsqueryf
<@запрос tsquery включён в другой?'cat'::tsquery <@ 'cat & rat'::tsqueryt

Примечание

Операторы включения tsquery рассматривают только лексемы двух запросов, игнорируя операторы их сочетания.

В дополнение к операторам, перечисленным в этой таблице, для типов tsvector и tsquery определены обычные операторы сравнения для B-дерева (=, < и т. д.). Они не очень полезны для поиска, но позволяют, в частности, создавать индексы для столбцов этих типов.

Таблица 9.38. Функции текстового поиска

ФункцияТип результатаОписаниеПримерРезультат
get_current_ts_config()regconfigполучает конфигурацию текстового поиска по умолчаниюget_current_ts_config()english
length(tsvector)integerчисло лексем в значении tsvectorlength('fat:2,4 cat:3 rat:5A'::tsvector)3
numnode(tsquery)integerчисло лексем и операторов в запросе tsquerynumnode('(fat & rat) | cat'::tsquery)5
plainto_tsquery([конфигурация regconfig ,] запрос text)tsqueryвыдаёт значение tsquery, игнорируя пунктуациюplainto_tsquery('english', 'The Fat Rats')'fat' & 'rat'
phraseto_tsquery([конфигурация regconfig ,] запрос text)tsqueryвыдаёт значение tsquery, игнорируя пунктуациюphraseto_tsquery('english', 'The Fat Rats')'fat' <-> 'rat'
querytree(запрос tsquery)textполучает индексируемую часть запроса tsqueryquerytree('foo & ! bar'::tsquery)'foo'
setweight(tsvector, "char")tsvectorназначает веса каждому элементу значения tsvectorsetweight('fat:2,4 cat:3 rat:5B'::tsvector, 'A')'cat':3A 'fat':2A,4A 'rat':5A
setweight(tsquery, "char")tsqueryдобавляет веса каждому элементу значения tsquerysetweight('fat ? cat & rat:B'::tsquery, 'A')( 'fat':A ? 'cat':A ) & 'rat':AB
strip(tsvector)tsvectorубирает позиции и веса из значения tsvectorstrip('fat:2,4 cat:3 rat:5A'::tsvector)'cat' 'fat' 'rat'
to_tsquery([конфигурация regconfig ,] запрос text)tsqueryнормализует слова и переводит их в tsqueryto_tsquery('english', 'The & Fat & Rats')'fat' & 'rat'
to_tsvector([конфигурация regconfig ,] документ text)tsvectorсокращает текст документа до значения tsvectorto_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заменяет элементы запроса, выбирая цели и подстановки командой SELECTSELECT ts_rewrite('a & b'::tsquery, 'SELECT t,s FROM aliases')'b' & ( 'foo' | 'bar' )
tsquery_phrase(запрос1 tsquery, запрос2 tsquery)tsqueryреализация оператора <-> (ПРЕДШЕСТВУЕТ)tsquery_phrase(to_tsquery('fat'), to_tsquery('cat'))'fat' <-> 'cat'
tsquery_phrase(запрос1 tsquery, запрос2 tsquery, расстояние integer)tsqueryобъединение слов во фразу с указанием расстоянияtsquery_phrase(to_tsquery('fat'), to_tsquery('cat'), 10)'fat' <10> 'cat'
tsvector_update_trigger()triggerтриггерная функция для автоматического изменения столбца типа tsvectorCREATE TRIGGER ... tsvector_update_trigger(tsvcol, 'pg_catalog.​swedish', title, body)
tsvector_update_trigger_column()triggerтриггерная функция для автоматического изменения столбца типа tsvectorCREATE 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получает статистику столбца tsvectorts_stat('SELECT vector from apod')(foo,10,15) ...

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy