Документация по 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-функции |