9.13. 텍스트 검색 기능 및 연산자#

표 9.42, 표 9.43표 9.44전체 텍스트 검색을 위해 제공되는 기능과 토토 사이트를 요약하십시오. 보다무지개 토토 : 토토 사이트 : 17 : 12 장. 전문 검색에 대한 자세한 설명PostgreSQL의 텍스트 검색 기능.

표 9.42. 텍스트 검색 연산자

운영자

설명

예제

tsvector @@ tsquery부울

tsquery @@ tsvector부울

dotsvector매치tsquery? (논쟁은 순서대로 주어질 수 있습니다.)

to_tsvector ( 'Fat Cats Ate Rats') @@ To_tsquery ( 'Cat & Rat')t

텍스트 @@ tsquery부울

암시 적으로 호출 한 후 텍스트 문자열을 수행합니다to_tsvector (), 매치tsquery?

'뚱뚱한 고양이는 쥐를 먹었다'@@ to_tsquery ( 'cat & rat')t

TSVECTOR || TSVECTORTSVECTOR

두 가지TSVECTORs. 두 입력에 Lexeme 위치가 포함 된 경우 두 번째 입력 위치는 그에 따라 조정됩니다.

'a : 1 b : 2':: tsvector || 'C : 1 D : 2 B : 3':: tsvector'A': 1 'B': 2,5 'C': 3 'D': 4

tsquery && TSQUERYTSQUERY

및 2tsquerys Together, 두 입력 쿼리와 일치하는 토토 사이트와 일치하는 쿼리를 생성합니다.

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

tsquery || tsqueryTSQUERY

Ors Twotsquerys Together, 입력 쿼리와 일치하는 토토 사이트와 일치하는 쿼리를 생성합니다.

'지방 | 쥐 ':: tsquery || '고양이':: tsquery'fat'| '쥐'| '고양이'

!! tsquerytsquery

부정 atsquery, 입력 쿼리와 일치하지 않는 토토 사이트와 일치하는 쿼리 생성.

!! '고양이':: tsquery! 'cat'

tsquery <-- tsquerytsquery

두 개의 입력 쿼리가 연속 Lexemes에서 일치하는 경우 일치하는 문구 쿼리를 구성합니다.

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

tsquery @ tsquery부울

먼저tsquery두 번째를 포함합니까? (이것은 한 쿼리에 나타나는 모든 Lexemes가 다른 쿼리에 표시되어 결합 토토 사이트를 무시하는지 여부를 고려합니다.)

'cat':: tsquery @ 'cat & rat':: tsqueryF

tsquery <@ tsquery부울

첫 번째tsquery두 번째에 포함되어 있습니까? (이것은 한 쿼리에 나타나는 모든 Lexemes가 다른 쿼리에 표시되어 결합 토토 사이트를 무시하는지 여부를 고려합니다.)

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

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


이러한 전문 운영자 외에도 일반적인 비교 연산자가표 9.1유형에 사용할 수 있습니다tsvectortsquery. 텍스트 검색에는 그다지 유용하지 않지만 예를 들어 이러한 유형의 열에서 고유 인덱스를 구축 할 수 있습니다.

표 9.43. 텍스트 검색 기능

기능

설명

예제

array_to_tsvector(텍스트 []) →TSVECTOR

텍스트 문자열 배열을 A로 변환합니다TSVECTOR. 주어진 문자열은 추가 처리없이 Lexemes로 사용됩니다. 배열 요소는 비어 있지 않아야합니다.NULL.

18586_18630'고양이' '뚱뚱한'쥐 '

get_current_ts_config() →RegConfig

현재 기본 텍스트 검색 구성의 OID를 반환합니다 (default_text_search_config).

get_current_ts_config ()영어

길이(TSVECTOR) →Integer

lexemes의 수를 반환합니다tsvector.

길이 ( 'Fat : 2,4 Cat : 3 Rat : 5a':: tsvector)3

Numnode(tsquery) →정수

lexemes + 운영자 수를 반환합니다tsquery.

Numnode ( '(Fat & Rat) | Cat':: tsquery)5

plainto_tsquery([config RegConfig,]쿼리 텍스트) →TSQUERY

텍스트를 A로 변환합니다TSQUERY, 지정된 또는 기본 구성에 따라 단어 정규화. 문자열의 문장 부호는 무시됩니다 (쿼리 연산자를 결정하지 않음). 결과 쿼리는 텍스트의 모든 비 스토프가 포함 된 토토 사이트와 일치합니다.

Plainto_tsquery ( '영어', '뚱뚱한 쥐')'fat'& 'rat'

Phraseto_tsquery([config RegConfig,]쿼리 텍스트) →TSQUERY

텍스트를 A로 변환합니다TSQUERY, 지정된 또는 기본 구성에 따라 단어 정규화. 문자열의 문장 부호는 무시됩니다 (쿼리 연산자를 결정하지 않음). 결과 쿼리는 텍스트의 모든 비 스토프가 포함 된 문구와 일치합니다.

Phraseto_tsquery ( '영어', '뚱뚱한 쥐')'fat'<- '쥐'

Phraseto_tsquery ( '영어', '고양이와 쥐')'고양이'<2 '쥐'

WebSearch_to_tsquery([config RegConfig,]쿼리 텍스트) →TSQUERY

텍스트를 A로 변환합니다TSQUERY, 지정된 또는 기본 구성에 따라 단어 정규화. 인용 된 단어 시퀀스는 문구 테스트로 변환됩니다. 단어또는OR 토토 사이트를 생산하는 것으로 이해되며 대시는 작동하지 않는 토토 사이트를 생성합니다. 다른 구두점은 무시됩니다. 이것은 일부 일반적인 웹 검색 도구의 동작과 비슷합니다.

WebSearch_to_tsquery ( '영어', '뚱뚱한 쥐 "또는 고양이 개''fat'<- '쥐'| '고양이'& '개'

QueryTree(TSQUERY) →텍스트

a의 인덱스 가능한 부분의 표현을 생성합니다.tsquery. 비어 있거나 정당한 결과t쿼리가 아닌 쿼리를 나타냅니다.

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

setweight(Vector TSVECTOR, 웨이트 "char") →TSVECTOR

지정된 지정웨이트의 각 요소에Vector.

setweight ( 'fat : 2,4 cat : 3 rat : 5b':: tsvector, 'a')'고양이': 3a 'fat': 2a, 4a '쥐': 5a

setweight(Vector TSVECTOR, weight "char", Lexemes 텍스트 []) →tsvector

지정된 지정웨이트의 요소VectorLexemes. 문자열lexemes는 추가 처리없이 Lexemes로 간주됩니다. lexeme에서 일치하지 않는 문자열Vector무시됩니다.

setweight ( 'fat : 2,4 cat : 3 rat : 5,6b':: tsvector, 'a', 'cat, rat')'고양이': 3A '지방': 2,4 '쥐': 5A, 6A

Strip(TSVECTOR) →TSVECTOR

에서 위치와 무게를 제거합니다TSVECTOR.

Strip ( 'Fat : 2,4 Cat : 3 Rat : 5a':: tsvector)'고양이' '뚱뚱한'쥐 '

to_tsquery([config RegConfig,]쿼리 텍스트) →tsquery

텍스트를 A로 변환합니다TSQUERY, 지정된 또는 기본 구성에 따라 단어 정규화. 단어는 유효한 것으로 결합해야합니다TSQUERY운영자.

TO_TSQUERY ( '영어', '& fat & rats')'fat'& 'rat'

to_tsvector([config RegConfig,]토토 사이트 텍스트) →TSVECTOR

텍스트를 A로 변환합니다TSVECTOR, 지정된 또는 기본 구성에 따라 단어 정규화. 위치 정보가 결과에 포함되어 있습니다.

to_tsvector ( '영어', '뚱뚱한 쥐')'fat': 2 '쥐': 3

to_tsvector([config RegConfig,]토토 사이트 JSON) →TSVECTOR

to_tsvector([config RegConfig,]토토 사이트 JSONB) →TSVECTOR

JSON 토토 사이트의 각 문자열 값을 A로 변환합니다TSVECTOR, 지정된 또는 기본 구성에 따라 단어 정규화. 그런 다음 결과를 토토 사이트 순서로 연결하여 출력을 생성합니다. 위치 정보는 각 문자열 값 쌍 사이에 하나의 스톱워드가 존재하는 것처럼 생성됩니다. (조심하십시오토토 사이트 주문29899_29902JSON 객체의 필드 중 입력이있을 때 구현에 따라 다릅니다JSONB; 예제의 차이를 관찰하십시오.)

to_tsvector ( '영어', ' "aa": "뚱뚱한 쥐", "b": "dog"':: json)'개': 5 '지방': 2 '쥐': 3

to_tsvector ( '영어', 'aa ":"뚱뚱한 쥐 ","b ":"dog "':: jsonb)'Dog': 1 'Fat': 4 '쥐': 5

json_to_tsvector([config RegConfig,]Document JSON, 필터 JSONB) →TSVECTOR

JSONB_TO_TSVECTOR([config RegConfig,]토토 사이트 JSONB, 필터 JSONB) →TSVECTOR

JSON 토토 사이트에서 각 항목을 선택하여필터각각을 A로 변환합니다TSVECTOR, 지정된 또는 기본 구성에 따라 단어 정규화. 그런 다음 결과를 토토 사이트 순서로 연결하여 출력을 생성합니다. 위치 정보는 각 선택한 항목 쌍 사이에 하나의 스톱워드가 존재하는 것처럼 생성됩니다. (조심하십시오토토 사이트 주문JSON 객체의 필드 중 입력이있을 때 구현에 따라 다릅니다JSONB.)필터JSONB이러한 키워드 중 0 이상을 포함하는 배열 :"String"(모든 문자열 값 포함),"숫자"(모든 숫자 값 포함),"부울"(모든 부울 값 포함),"키"(모든 키 포함) 또는"All"(위의 모든 것을 포함). 특별한 경우,필터이러한 키워드 중 하나 인 간단한 JSON 값일 수도 있습니다.

json_to_tsvector ( '영어', ' "a": "뚱뚱한 쥐", "b": 123':: json, '[ "string", "numeric"]'123': 5 '지방': 2 '쥐': 3

json_to_tsvector ( '영어', ' "고양이": "뚱뚱한 쥐", "개": 123':: JSON, ' "All"')'123': 9 '고양이': 1 '개': 7 '지방': 4 '쥐': 5

TS_DELETE(Vector TSVECTOR, lexeme 텍스트) →TSVECTOR

주어진 발생이 제거됩니다lexeme에서Vector. 그만큼lexemeString은 추가 처리없이 Lexeme으로 취급됩니다.

TS_DELETE ( 'FAT : 2,4 CAT : 3 RAT : 5A':: TSVECTOR, 'FAT')'고양이': 3 '쥐': 5a

TS_DELETE(Vector TSVECTOR, Lexemes 텍스트 []) →TSVECTOR

lexemes의 발생을 제거합니다Lexemes에서Vector. 문자열Lexemes추가 처리없이 Lexemes로 간주됩니다. lexeme에서 일치하지 않는 문자열Vector무시됩니다.

TS_DELETE ( 'FAT : 2,4 CAT : 3 RAT : 5A':: TSVECTOR, ARRAY [ 'FAT', 'RAT']'고양이': 3

TS_FILTER(Vector TSVECTOR, 웨이트 "char"[]) →TSVECTOR

주어진 요소 만 선택웨이트에서Vector.

TS_FILTER ( 'Fat : 2,4 Cat : 3B, 7C Rat : 5A':: TSVector, 'A, B')'고양이': 3B '쥐': 5A

TS_HEADLINE([config RegConfig,]토토 사이트 텍스트, 쿼리 TSQUERY[, 옵션 텍스트]) →텍스트

약식 형식으로, 일치 (ES)의 표시쿼리in토토 사이트TSVECTOR. 토토 사이트의 단어는 쿼리와 일치하기 전에 지정된 또는 기본 구성에 따라 정규화됩니다. 이 기능의 사용은에서 논의됩니다.섹션 12.3.4, 사용 가능한 것을 설명하는옵션.

TS_HEADLINE ( ​​'뚱뚱한 고양이는 쥐를 먹었습니다.', 'cat')지방 <b 고양이 </b 쥐를 먹었습니다.

TS_HEADLINE([config RegConfig,]토토 사이트 JSON, 쿼리 tsquery[, 옵션 텍스트]) →텍스트

TS_HEADLINE([config RegConfig,]토토 사이트 JSONB, 쿼리 TSQUERY[, 옵션 텍스트]) →텍스트

약식 형식으로,의 일치 (ES)를 표시합니다.쿼리JSON 내 문자열 값으로 발생하는토토 사이트. 보다섹션 12.3.4자세한 내용은

TS_HEADLINE ( ​​' "CAT": "비가 내리는 고양이와 개"':: JSONB, 'CAT')"고양이": "Raining <b 고양이 </b 및 개"

TS_RANK([웨이트 Real [],]Vector TSVECTOR, 쿼리 TSQUERY[, 정규화 Integer]) →Real

얼마나 잘 보여주는 점수를 계산합니다Vector일치쿼리. 보다섹션 12.3.3자세한 내용.

TS_RANK (TO_TSVECTOR ( '비가 오는 고양이와 개'), '고양이')0.06079271

TS_RANK_CD([웨이트 Real [],]Vector TSVECTOR, 쿼리 TSQUERY[, 정규화 Integer]) →Real

얼마나 잘 보여주는 점수를 계산합니다Vector일치쿼리, 커버 밀도 알고리즘을 사용합니다. 보다섹션 12.3.3자세한 내용.

TS_RANK_CD (TO_TSVECTOR ( '비가 오는 고양이'), '고양이')0.1

TS_REWRITE(쿼리 TSQUERY, 대상 TSQUERY, 대체 TSQUERY) →tsquery

발생 대체대상with대체내에서쿼리. 보다섹션 12.4.2.1자세한 내용.

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

TS_REWRITE(쿼리 tsquery, select 텍스트) →TSQUERY

|쿼리a |select명령. 보다섹션 12.4.2.1자세한 내용.

ts_rewrite를 선택하십시오 ( 'a & b':: tsquery, 'select t, s from aliases')'b'& ( ​​'foo'| 'bar')

TSQUERY_PHRASE(Query1 TSQUERY, Query2 TSQUERY) →TSQUERY

일치를 검색하는 문구 쿼리 구성Query1andQuery2연속 Lexemes에서 (동일<--연산자).

tsquery_phrase (to_tsquery ( 'fat'), to_tsquery ( 'cat'))'fat'<- '고양이'

TSQUERY_PHRASE(Query1 TSQUERY, Query2 tsquery, 거리 정수) →TSQUERY

일치를 검색하는 문구 쿼리 구성Query1andQuery2정확히 발생합니다거리Lexemes.

tsquery_phrase (to_tsquery ( 'fat'), to_tsquery ( 'cat'), 10)'fat'<10 '고양이'

TSVECTOR_TO_ARRAY(TSVECTOR) →텍스트 []

변환TSVECTORLexemes 배열로.

TSVECTOR_TO_ARRAY ( 'FAT : 2,4 CAT : 3 RAT : 5A':: TSVECTOR)고양이, 지방, 쥐

Unnest(TSVECTOR) →기록(lexeme 텍스트, 위치 smallint [], 웨이트 텍스트)

a 확장TSVECTORlexeme 당 하나의 행 세트로.

SELECT * FROM UNNEST ( 'CAT : 3 FAT : 2,4 RAT : 5A':: TSVECTOR)

Lexeme | 위치 | 무게
--------+-----------+--------
 고양이 | 3 | 디
 지방 | 2,4 | d, d
 쥐 | 5 | 에이

Note

선택 사항을 수용하는 모든 텍스트 검색 기능RegConfig인수는에 지정된 구성을 사용합니다.default_text_search_config그 주장이 생략 될 때.

함수표 9.44는 일반적으로 일상적인 텍스트 검색 작업에 사용되지 않기 때문에 별도로 나열됩니다. 그들은 주로 새로운 텍스트 검색 구성의 개발 및 디버깅에 도움이됩니다.

표 9.44. 텍스트 검색 디버깅 기능

기능

설명

예제

TS_DEBUG([config RegConfig,]토토 사이트 텍스트) →Setof Record(alias 텍스트, 설명 텍스트, 토큰 텍스트, 사전 RegDictionary [], Dictionary Regdictionary, Lexemes 텍스트 [])

토큰을 추출하고 정규화합니다토토 사이트지정된 또는 기본 텍스트 검색 구성에 따라 각 토큰 처리 방법에 대한 정보를 반환합니다. 보다섹션 12.8.1자세한 내용.

TS_DEBUG ( '영어', '가장 밝은 초신성')(asciiword, "word, all ascii", the, English_Stem, English_Stem, ) ...

ts_lexize(dict RegDictionary, 토큰 텍스트) →텍스트 []

입력 토큰이 사전에 알려진 경우, 또는 토큰이 사전에 알려져있는 경우 빈 배열이지만 공허한 배열이지만 알려진 단어가 아닌 경우 널입니다. 보다섹션 12.8.3자세한 내용.

ts_lexize ( 'English_stem', 'stars')Star

TS_PARSE(parser_name 텍스트, 토토 사이트 텍스트) →Setof Record(TOKID 정수, 토큰 텍스트)

TOKENS에서 추출토토 사이트명명 된 파서를 사용합니다. 보다섹션 12.8.2자세한 내용.

TS_PARSE ( 'Default', 'Foo -Bar')(1, foo) ...

TS_PARSE(parser_oid OID, 토토 사이트 텍스트) →Setof Record(TOKID Integer, 토큰 텍스트)

토큰 추출물토토 사이트OID로 지정된 파서를 사용합니다. 보다섹션 12.8.2자세한 내용.

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

TS_TOKEN_TYPE(parser_name 텍스트) →Setof Record(TOKID 정수, alias 텍스트, 설명 텍스트)

명명 된 파서가 인식 할 수있는 각 유형의 토큰을 설명하는 테이블을 반환합니다. 보다섹션 12.8.2자세한 내용.

TS_TOKEN_TYPE ( 'Default')(1, asciiword, "Word, All Ascii") ...

TS_TOKEN_TYPE(parser_oid OID) →Setof Record(TOKID 정수, 별명 텍스트, 설명 텍스트)

OID가 지정한 구문 분석기가 인식 할 수있는 각 유형의 토큰을 설명하는 테이블을 반환합니다. 보다섹션 12.8.2자세한 내용.

TS_TOKEN_TYPE (3722)54824_54861

TS_STAT(sqlquery 텍스트[, 웨이트 텍스트]) →Setof Record(Word 텍스트, ndoc 정수, Nentry Integer)

실행sqlquery55702_55733TSVECTOR열, 데이터에 포함 된 각 고유 한 Lexeme에 대한 통계를 반환합니다. 보다섹션 12.4.4자세한 내용.

TS_STAT ( 'APOD에서 벡터 선택')(foo, 10,15) ...


수정 제출

토토 사이트에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식토토 사이트 문제를보고하려면