9.13. Функции и операторы текстового поиска
В Таблице 9.40, Таблице 9.41 и Таблице 9.42 собраны все существующие функции и операторы, предназначенные для полнотекстового поиска. Во всех деталях возможности полнотекстового поиска в Postgres Pro описаны в Главе 12.
Таблица 9.40. Операторы текстового поиска
| Оператор | Тип результата | Описание | Пример | Результат |
|---|---|---|---|---|
@@ | boolean | tsvector соответствует tsquery ? | to_tsvector('fat cats ate rats') @@ to_tsquery('cat & rat') | t |
@@@ | boolean | устаревший синоним для @@ | to_tsvector('fat cats ate rats') @@@ to_tsquery('cat & rat') | t |
|| | tsvector | объединяет два значения tsvector | 'a:1 b:2'::tsvector || 'c:1 d:2 b:3'::tsvector | 'a':1 'b':2,5 'c':3 'd':4 |
&& | tsquery | логическое И (AND) двух запросов tsquery | 'fat | rat'::tsquery && 'cat'::tsquery | ( 'fat' | 'rat' ) & 'cat' |
|| | tsquery | логическое ИЛИ (OR) двух запросов tsquery | 'fat | rat'::tsquery || 'cat'::tsquery | ( 'fat' | 'rat' ) | 'cat' |
!! | tsquery | отрицание запроса tsquery | !! 'cat'::tsquery | !'cat' |
<-> | tsquery | tsquery предшествует tsquery | to_tsquery('fat') <-> to_tsquery('rat') | 'fat' <-> 'rat' |
@> | boolean | запрос tsquery включает другой? | 'cat'::tsquery @> 'cat & rat'::tsquery | f |
<@ | boolean | запрос tsquery включён в другой? | 'cat'::tsquery <@ 'cat & rat'::tsquery | t |
Примечание
Операторы включения tsquery рассматривают только лексемы двух запросов, игнорируя операторы их сочетания.
В дополнение к операторам, перечисленным в этой таблице, для типов tsvector и tsquery определены обычные операторы сравнения для B-дерева (=, < и т. д.). Они не очень полезны для поиска, но позволяют, в частности, создавать индексы для столбцов этих типов.
Таблица 9.41. Функции текстового поиска
Примечание
Все функции текстового поиска, принимающие необязательный аргумент regconfig, будут использовать конфигурацию, указанную в параметре default_text_search_config, когда этот аргумент опущен.
Функции в Таблице 9.42 перечислены отдельно, так как они не очень полезны в традиционных операциях поиска. Они предназначены в основном для разработки и отладки новых конфигураций текстового поиска.
Таблица 9.42. Функции отладки текстового поиска
9.13. Text Search Functions and Operators
Table 9.40, Table 9.41 and Table 9.42 summarize the functions and operators that are provided for full text searching. See Chapter 12 for a detailed explanation of Postgres Pro's text search facility.
Table 9.40. Text Search Operators
| Operator | Return Type | Description | Example | Result |
|---|---|---|---|---|
@@ | boolean | tsvector matches tsquery ? | to_tsvector('fat cats ate rats') @@ to_tsquery('cat & rat') | t |
@@@ | boolean | deprecated synonym for @@ | to_tsvector('fat cats ate rats') @@@ to_tsquery('cat & rat') | t |
|| | tsvector | concatenate tsvectors | 'a:1 b:2'::tsvector || 'c:1 d:2 b:3'::tsvector | 'a':1 'b':2,5 'c':3 'd':4 |
&& | tsquery | AND tsquerys together | 'fat | rat'::tsquery && 'cat'::tsquery | ( 'fat' | 'rat' ) & 'cat' |
|| | tsquery | OR tsquerys together | 'fat | rat'::tsquery || 'cat'::tsquery | ( 'fat' | 'rat' ) | 'cat' |
!! | tsquery | negate a tsquery | !! 'cat'::tsquery | !'cat' |
<-> | tsquery | tsquery followed by tsquery | to_tsquery('fat') <-> to_tsquery('rat') | 'fat' <-> 'rat' |
@> | boolean | tsquery contains another ? | 'cat'::tsquery @> 'cat & rat'::tsquery | f |
<@ | boolean | tsquery is contained in ? | 'cat'::tsquery <@ 'cat & rat'::tsquery | t |
Note
The tsquery containment operators consider only the lexemes listed in the two queries, ignoring the combining operators.
In addition to the operators shown in the table, the ordinary B-tree comparison operators (=, <, etc) are defined for types tsvector and tsquery. These are not very useful for text searching but allow, for example, unique indexes to be built on columns of these types.
Table 9.41. Text Search Functions
Note
All the text search functions that accept an optional regconfig argument will use the configuration specified by default_text_search_config when that argument is omitted.
The functions in Table 9.42 are listed separately because they are not usually used in everyday text searching operations. They are helpful for development and debugging of new text search configurations.
Table 9.42. Text Search Debugging Functions