×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

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

Таблица 2.6.42, Таблица 2.6.43 и Таблица 2.6.44 содержит описание функций и операторов, предназначенных для полнотекстового поиска. См. Глава 2.9 для получения подробных разъяснений Digital Q.DataBaseмеханизма текстового поиска.

Таблица 2.6.42. Операторы текстового поиска

Оператор

Описание

Примеры

tsvector @@ tsqueryboolean

tsquery @@ tsvectorboolean

Соответствует ли tsvector соответствие tsquery? (Аргументы могут быть указаны в произвольном порядке.)

to_tsvector('fat cats ate rats') @@ to_tsquery('cat & rat')t

text @@ tsqueryboolean

Соответствует ли текстовая строка после неявного вызова функции из to_tsvector(), условию tsquery?

'fat cats ate rats' @@ to_tsquery('cat & rat')t

tsvector || tsvectortsvector

Выполняет конкатенацию двух tsvectorобъектов. Если оба входных значения содержат позиции лексем, то позиции во втором входном значении корректируются соответствующим образом.

'a:1 b:2'::tsvector || 'c:1 d:2 b:3'::tsvector'a':1 'b':2,5 'c':3 'd':4

tsquery && tsquerytsquery

Выполняет логическое умножение (AND) двух tsqueryзапросов, формируя результирующий запрос, который соответствует документам, удовлетворяющим обоим входным запросам.

'fat | rat'::tsquery && 'cat'::tsquery( 'fat' | 'rat' ) & 'cat'

tsquery || tsquerytsquery

Выполняет логическое сложение (OR) двух tsqueryзапросов, формируя результирующий запрос, который соответствует документам, удовлетворяющим любому из входных запросов.

'fat | rat'::tsquery || 'cat'::tsquery'fat' | 'rat' | 'cat'

!! tsquerytsquery

Выполняет логическое отрицание (NOT) tsqueryзапроса, формируя запрос, который соответствует документы, не соответствующие входному запросу.

!! 'cat'::tsquery!'cat'

tsquery <-> tsquerytsquery

Формирует фразовый запрос, который возвращает совпадение, если два входных запроса соответствуют последовательно расположенным лексемам.

to_tsquery('fat') <-> to_tsquery('rat')'fat' <-> 'rat'

tsquery @> tsqueryboolean

Содержит ли первый запрос tsquery второй? (При этом учитывается только наличие всех лексем из одного запроса в другом, без учёта логических операторов.)

'cat'::tsquery @> 'cat & rat'::tsqueryf

tsquery <@ tsqueryboolean

Содержится ли первый запрос tsquery во втором? (При этом учитывается только наличие всех лексем из одного запроса в другом, без учёта логических операторов.)

'cat'::tsquery <@ 'cat & rat'::tsqueryt

'cat'::tsquery <@ '!cat & rat'::tsqueryt


В дополнение к этим специализированным операторам доступны обычные операторы сравнения, приведенные в Таблица 2.6.1 доступны для типов данных tsvector и tsquery. Они не имеют большой практической ценности для текстового поиска, однако позволяют, например, создавать уникальные индексы для столбцов этих типов.

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

Функция

Описание

Примеры

array_to_tsvector ( text[] ) → tsvector

Преобразует массив текстовых строк в тип данных tsvector. Заданные строки используются в качестве лексем в исходном виде, без дальнейшей обработки. Элементы массива не должны быть пустыми строками или NULL.

array_to_tsvector('{fat,cat,rat}'::text[])'cat' 'fat' 'rat'

get_current_ts_config ( ) → regconfig

Возвращает идентификатор OID текущей конфигурации полнотекстового поиска по умолчанию (установленной параметром default_text_search_config).

get_current_ts_config()english

длины ( 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 ( [ config regconfig, ] query text ) → tsquery

Данная функция преобразует текст в тип tsqueryи выполняет нормализацию слов согласно указанной конфигурации или конфигурации по умолчанию. Любые знаки препинания в строке игнорируются (они не определяют операторы запроса). Полученный запрос соответствует документам, которые содержат все слова из текста, не входящие в список стоп-слов.

plainto_tsquery('english', 'The Fat Rats')'fat' & 'rat'

phraseto_tsquery ( [ config regconfig, ] query text ) → tsquery

Данная функция преобразует текст в тип tsqueryи выполняет нормализацию слов согласно указанной конфигурации или конфигурации по умолчанию. Любые знаки препинания в строке игнорируются (они не определяют операторы запроса). Полученный запрос соответствует фразам, содержащим все слова из текста, не являющиеся стоп-словами.

phraseto_tsquery('english', 'The Fat Rats')'fat' <-> 'rat'

phraseto_tsquery('english', 'The Cat and Rats')'cat' <2> 'rat'

websearch_to_tsquery ( [ config regconfig, ] query text ) → tsquery

Данная функция преобразует текст в тип tsqueryи выполняет нормализацию слов согласно указанной конфигурации или конфигурации по умолчанию. Последовательности слов, заключенные в кавычки, преобразуются в условия поиска фраз. Слово «или» интерпретируется как формирующее оператор OR, а тире — как оператор NOT; прочие знаки препинания игнорируются. Данный алгоритм имитирует поведение некоторых распространенных поисковых систем.

websearch_to_tsquery('english', '"fat rat" or cat dog')'fat' <-> 'rat' | 'cat' & 'dog'

querytree ( tsquery ) → text

Формирует текстовое представление индексируемой части запроса tsquery. Результат в виде пустой строки или только символа T указывает на то, что запрос не является индексируемым.

querytree('foo & ! bar'::tsquery)'foo'

setweight ( вектор tsvector, вес "char" ) → tsvector

Назначает указанный вес каждому элементу из вектор.

setweight('fat:2,4 cat:3 rat:5B'::tsvector, 'A')'cat':3A 'fat':2A,4A 'rat':5A

setweight ( вектор tsvector, вес "char", лексемы text[] ) → tsvector

Назначает указанный вес элементам из вектор указанным в списке в лексемы. Строки в лексемы рассматриваются как лексемы в исходном виде, без дальнейшей обработки. Строки, не соответствующие ни одной лексеме в вектор игнорируются.

setweight('fat:2,4 cat:3 rat:5,6B'::tsvector, 'A', '{cat,rat}')'cat':3A 'fat':2,4 'rat':5A,6A

strip ( tsvector ) → tsvector

Данная функция удаляет сведения о позициях и весах из tsvector.

strip('fat:2,4 cat:3 rat:5A'::tsvector)'cat' 'fat' 'rat'

to_tsquery ( [ config regconfig, ] query text ) → tsquery

Данная функция преобразует текст в тип tsqueryи выполняет нормализацию слов согласно указанной конфигурации или конфигурации по умолчанию. Слова должны быть объединены с помощью допустимых tsquery операторов.

to_tsquery('english', 'The & Fat & Rats')'fat' & 'rat'

to_tsvector ( [ config regconfig, ] документ text ) → tsvector

Данная функция преобразует текст в тип tsvectorи выполняет нормализацию слов согласно указанной конфигурации или конфигурации по умолчанию. Сведения о позициях включаются в результат.

to_tsvector('english', 'The Fat Rats')'fat':2 'rat':3

to_tsvector ( [ config regconfig, ] документ json ) → tsvector

to_tsvector ( [ config regconfig, ] документ jsonb ) → tsvector

Данная функция преобразует каждое строковое значение в JSON-документе в запроса tsvector, нормализуя слова в соответствии с указанной или конфигурацией по умолчанию. Затем результаты объединяются в порядке следования в документе для формирования выходного значения. Сведения о позициях генерируются так, будто между каждой парой строковых значений содержится одно стоп-слово. (Следует учитывать, что «порядок следования в документе» полей в объекте JSON зависит от реализации, если входные соответствует jsonb; увидеть разницу в примерах.)

to_tsvector('english', '{"aa": "The Fat Rats", "b": "dog"}'::json)'dog':5 'fat':2 'rat':3

to_tsvector('english', '{"aa": "The Fat Rats", "b": "dog"}'::jsonb)'dog':1 'fat':4 'rat':5

json_to_tsvector ( [ config regconfig, ] документ json, filter jsonb ) → tsvector

jsonb_to_tsvector ( [ config regconfig, ] документ jsonb, filter jsonb ) → tsvector

Выбирает из документа JSON каждый элемент, запрошенный с помощью с filter и преобразует каждый из них в запроса tsvector, нормализуя слова в соответствии с указанной или конфигурацией по умолчанию. Затем результаты объединяются в порядке следования в документе для формирования выходного значения. Сведения о позициях генерируются так, будто между каждой парой выбранных элементов. (Обратите внимание, что «порядок следования в документе» полей в объекте JSON зависит от реализации, если входные соответствует jsonb.) Данный filter должен представлять собой jsonb массив, содержащий ноль или более следующих ключевых слов: "string" (для включения всех строковых значений), "numeric" (для включения всех числовых значений), "boolean" (для включения всех логических значений), "key" (для включения всех ключей) или "all" (для включения всех вышеперечисленных значений). В качестве особого случая аргумент filter также может представлять собой простое значение JSON, соответствующее одному из этих ключевых слов.

json_to_tsvector('english', '{"a": "The Fat Rats", "b": 123}'::json, '["string", "numeric"]')'123':5 'fat':2 'rat':3

json_to_tsvector('english', '{"cat": "The Fat Rats", "dog": 123}'::json, '"all"')'123':9 'cat':1 'dog':7 'fat':4 'rat':5

ts_delete ( вектор tsvector, лексема text ) → tsvector

Удаляет все вхождения указанной лексема из вектор. Данный лексема строка обрабатывается как лексема в исходном виде, без дополнительной обработки.

ts_delete('fat:2,4 cat:3 rat:5A'::tsvector, 'fat')'cat':3 'rat':5A

ts_delete ( вектор tsvector, лексемы text[] ) → tsvector

Удаляет все вхождения лексем в лексемы из вектор. Строки в лексемы рассматриваются как лексемы в исходном виде, без дальнейшей обработки. Строки, не соответствующие ни одной лексеме в вектор игнорируются.

ts_delete('fat:2,4 cat:3 rat:5A'::tsvector, ARRAY['fat','rat'])'cat':3

ts_filter ( вектор tsvector, веса "char"[] ) → tsvector

Выбирает только элементы с указанными веса из вектор.

ts_filter('fat:2,4 cat:3b,7c rat:5A'::tsvector, '{a,b}')'cat':3B 'rat':5A

ts_headline ( [ config regconfig, ] документ text, query tsquery [, options text ] ) → text

Отображает в сокращенной форме фрагменты текста, соответствующие с query в с документ, которые должны представлять собой простой текст, а не запроса tsvector. Слова в документе нормализуются согласно указанной конфигурации или конфигурации по умолчанию перед сопоставлением с запросом. Применение данной функции рассматривается в Раздел 2.9.3.4, где также описываются доступные options.

ts_headline('The fat cat ate the rat.', 'cat')The fat cat ate the rat.

ts_headline ( [ config regconfig, ] документ json, query tsquery [, options text ] ) → text

ts_headline ( [ config regconfig, ] документ jsonb, query tsquery [, options text ] ) → text

Отображает в сокращенной форме фрагменты текста, соответствующие с query , которые встречаются в строковых значениях внутри объекта JSON документ. См. Раздел 2.9.3.4 для получения более подробных сведений.

ts_headline('{"cat":"raining cats and dogs"}'::jsonb, 'cat'){"cat": "raining cats and dogs"}

ts_rank ( [ веса real[], ] вектор tsvector, query tsquery [, нормализация integer ] ) → real

Вычисляет оценку, демонстрирующую степень соответствия с вектор соответствует с query. См. Раздел 2.9.3.3 для получения подробных сведений.

ts_rank(to_tsvector('raining cats and dogs'), 'cat')0.06079271

ts_rank_cd ( [ веса real[], ] вектор tsvector, query tsquery [, нормализация integer ] ) → real

Вычисляет оценку, демонстрирующую степень соответствия с вектор соответствует с query, используя плотность покрытия алгоритм. См. Раздел 2.9.3.3 для получения подробных сведений.

ts_rank_cd(to_tsvector('raining cats and dogs'), 'cat')0.1

ts_rewrite ( query tsquery, целевой запрос tsquery, подстановка tsquery ) → tsquery

Данная функция заменяет вхождения целевой запрос с подстановка внутри query. См. Раздел 2.9.4.2.1 для получения подробных сведений.

ts_rewrite('a & b'::tsquery, 'a'::tsquery, 'foo|bar'::tsquery)'b' & ( 'foo' | 'bar' )

ts_rewrite ( query tsquery, выборка text ) → tsquery

Функция заменяет части query в соответствии с целевых объектов и замен, полученных в результате выполнения запроса SELECT команды. См. Раздел 2.9.4.2.1 для получения подробных сведений.

SELECT ts_rewrite('a & b'::tsquery, 'SELECT t,s FROM aliases')'b' & ( 'foo' | 'bar' )

tsquery_phrase ( запрос1 tsquery, запрос2 tsquery ) → tsquery

Создает фразный запрос, выполняющий поиск совпадений запрос1 и запрос2 в последовательных лексемах (аналогично оператору функции <-> operator).

tsquery_phrase(to_tsquery('fat'), to_tsquery('cat'))'fat' <-> 'cat'

tsquery_phrase ( запрос1 tsquery, запрос2 tsquery, расстояние integer ) → tsquery

Создает фразный запрос, выполняющий поиск совпадений запрос1 и запрос2 которые расположены ровно на заданном расстоянии в расстояние лексемах друг от друга.

tsquery_phrase(to_tsquery('fat'), to_tsquery('cat'), 10)'fat' <10> 'cat'

tsvector_to_array ( tsvector ) → text[]

Преобразует tsvector в массив лексем.

tsvector_to_array('fat:2,4 cat:3 rat:5A'::tsvector){cat,fat,rat}

unnest ( tsvector ) → setof record ( лексема text, позиции smallint[], веса text )

Разворачивает значение tsvector в набор строк, по одной строке на каждую лексему.

select * from unnest('cat:3 fat:2,4 rat:5A'::tsvector)

 lexeme | positions | weights
--------+-----------+---------
 cat    | {3}       | {D}
 fat    | {2,4}     | {D,D}
 rat    | {5}       | {A}


Примечание

Для всех функций полнотекстового поиска, принимающих необязательный regconfig аргумент, используется конфигурация, указанная в default_text_search_config в случае, если данный аргумент не указан.

Функции, приведенные в Таблица 2.6.44 вынесены в отдельный список, так как они обычно не применяются в повседневных операциях текстового поиска. Данные функции в первую очередь полезны для разработки и отладки новых конфигураций текстового поиска.

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

Функция

Описание

Примеры

ts_debug ( [ config regconfig, ] документ text ) → setof record ( псевдоним text, описание text, токен text, словари regdictionary[], словарь regdictionary, лексемы text[] )

Извлекает и нормализует токены из строки с документ в соответствии с указанной или используемой по умолчанию конфигурацией текстового поиска, возвращая сведения о том, каким образом был обработан каждый токен. См. Раздел 2.9.8.1 для получения подробных сведений.

ts_debug('english', 'The Brightest supernovaes')(asciiword,"Word, all ASCII",The,{english_stem},english_stem,{}) ...

ts_lexize ( dict regdictionary, токен text ) → text[]

Возвращает массив лексем-заменителей, если входной токен распознан словарь, либо пустой массив, если данный токен известен словарю, но является стоп-словом, либо значение NULL, если слово не является известным. См. Раздел 2.9.8.3 для получения подробных сведений.

ts_lexize('english_stem', 'stars'){star}

ts_parse ( parser_name text, документ text ) → setof record ( tokid integer, токен text )

Данная функция извлекает токены из строки документ с использованием указанного парсера. См. Раздел 2.9.8.2 для получения подробных сведений.

ts_parse('default', 'foo - bar')(1,foo) ...

ts_parse ( parser_oid oid, документ text ) → setof record ( tokid integer, токен text )

Данная функция извлекает токены из строки документ с использованием парсера, заданного с помощью идентификатора OID. См. Раздел 2.9.8.2 для получения подробных сведений.

ts_parse(3722, 'foo - bar')(1,foo) ...

ts_token_type ( parser_name text ) → setof record ( tokid integer, псевдоним text, описание text )

Функция возвращает таблицу, описывающую каждый тип токенов, который может распознать указанный парсер. См. Раздел 2.9.8.2 для получения подробных сведений.

ts_token_type('default')(1,asciiword,"Word, all ASCII") ...

ts_token_type ( parser_oid oid ) → setof record ( tokid integer, псевдоним text, описание text )

Данная функция возвращает таблицу с описанием каждого типа токена, который может распознать анализатор, указанный с помощью идентификатора OID. См. Раздел 2.9.8.2 для получения подробных сведений.

ts_token_type(3722)(1,asciiword,"Word, all ASCII") ...

ts_stat ( sqlquery text [, веса text ] ) → setof record ( word text, ndoc integer, nentry integer )

Функция выполняет указанный запрос sqlquery sqlquery, который должен возвращать единственный столбец tsvector , и выводит статистические данные по каждой отдельной лексеме, содержащейся в предоставленных данных. См. Раздел 2.9.4.4 для получения подробных сведений.

ts_stat('SELECT vector FROM apod')(foo,10,15) ...


Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению