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

표 9.42, 표 9.43그리고표 9.44전체 텍스트 검색을 위해 제공되는 기능과 연산자를 요약합니다. 보다무지개 토토 : 문서 : 17 : 12 장. 전문 검색자세한 설명은PostgreSQL의 텍스트 검색 기능입니다.

표 9.42. 텍스트 검색 연산자

운영자

설명

ts벡터 @@ tsquery부울

tsquery @@ ts벡터부울

그렇습니다ts벡터일치tsquery? (인수는 어느 순서로든 주어질 수 있습니다.)

to_tsVector('살찐 고양이가 쥐를 먹었습니다') @@ to_tsquery('고양이 & 쥐')t

텍스트 @@ tsquery부울

암시적 호출 후 텍스트 문자열을 수행합니다.to_ts벡터(), 일치tsquery?

'살찐 고양이가 쥐를 먹었습니다' @@ to_tsquery('고양이 & 쥐')t

ts벡터 || ts벡터ts벡터

두 개를 연결합니다ts벡터s. 두 입력 모두 어휘소 위치를 포함하는 경우 두 번째 입력의 위치는 그에 따라 조정됩니다.

'a:1 b:2'::ts벡터 || 'c:1 d:2 b:3'::ts벡터'a':1 'b':2,5 'c':3 'd':4

tsquery && tsquerytsquery

AND 2tsquerys를 함께 사용하여 두 입력 쿼리와 일치하는 토토 사이트와 일치하는 쿼리를 생성합니다.

'지방 | 쥐'::tsquery && '고양이'::tsquery( '뚱뚱' | '쥐' ) & '고양이'

tsquery || tsquerytsquery

OR 2tsquerys를 함께 사용하여 입력 쿼리와 일치하는 토토 사이트와 일치하는 쿼리를 생성합니다.

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

!! tsquerytsquery

a를 부정합니다tsquery, 입력 쿼리와 일치하지 않는 토토 사이트를 일치시키는 쿼리를 생성합니다.

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

tsquery <- tsquerytsquery

두 개의 입력 쿼리가 연속적인 어휘에서 일치하면 일치하는 구문 쿼리를 구성합니다.

to_tsquery('지방') <- to_tsquery('쥐')'뚱뚱' <- '쥐'

tsquery @ tsquery부울

먼저 수행tsquery두 번째를 포함합니까? (이것은 결합 연산자를 무시하고 한 쿼리에 나타나는 모든 어휘가 다른 쿼리에 나타나는지 여부만 고려합니다.)

'고양이'::tsquery @ '고양이와 쥐'::tsqueryf

tsquery <@ tsquery부울

먼저tsquery두 번째에 포함되어 있나요? (이것은 결합 연산자를 무시하고 한 쿼리에 나타나는 모든 어휘가 다른 쿼리에 나타나는지 여부만 고려합니다.)

'고양이'::tsquery <@ '고양이 & 쥐'::tsqueryt

'고양이'::tsquery <@ '!cat & 쥐'::tsqueryt


이러한 특수 연산자 외에도 다음과 같은 일반적인 비교 연산자가 있습니다.표 9.1유형에 사용 가능ts벡터그리고tsquery. 이는 텍스트 검색에는 그다지 유용하지 않지만 예를 들어 이러한 유형의 열에 고유 인덱스를 구축할 수 있습니다.

표 9.43. 텍스트 검색 기능

기능

설명

array_to_tsVector ( 텍스트[] ) → ts벡터

텍스트 문자열 배열을 다음으로 변환합니다.ts벡터. 주어진 문자열은 추가 처리 없이 있는 그대로 어휘소로 사용됩니다. 배열 요소는 빈 문자열이 아니어야 합니다. 또는NULL.

array_to_tsVector('fat,cat,rat'::text[])'고양이' '뚱뚱한' '쥐'

get_current_ts_config ( ) → regconfig

현재 기본 텍스트 검색 구성의 OID를 반환합니다(다음에 의해 설정됨).default_text_search_config).

get_current_ts_config()영어

길이 ( ts벡터 ) → 정수

어휘소 수를 반환합니다.ts벡터.

length('fat:2,4 cat:3 쥐:5A'::tsVector)3

numnode ( tsquery ) → 정수

어휘소와 연산자의 수를 반환합니다.tsquery.

numnode('(지방 및 쥐) | 고양이'::tsquery)5

plainto_tsquery ( [ 구성 regconfig, ] 질의 텍스트 ) → tsquery

텍스트를 a로 변환tsquery, 지정된 구성 또는 기본 구성에 따라 단어를 정규화합니다. 문자열의 모든 구두점은 무시됩니다(쿼리 연산자를 결정하지 않음). 결과 쿼리는 텍스트에 불용어가 아닌 모든 단어가 포함된 토토 사이트와 일치합니다.

plainto_tsquery('english', 'The Fat Rats')'지방' & '쥐'

phraseto_tsquery ( [ 구성 regconfig, ] 질의 텍스트 ) → tsquery

텍스트를 a로 변환합니다.tsquery, 지정된 구성 또는 기본 구성에 따라 단어를 정규화합니다. 문자열의 모든 구두점은 무시됩니다(쿼리 연산자를 결정하지 않음). 결과 쿼리는 텍스트에 불용어가 아닌 단어가 모두 포함된 구문과 일치합니다.

phraseto_tsquery('english', 'The Fat Rats')'뚱뚱한' <- '쥐'

phraseto_tsquery('english', '고양이와 쥐')'고양이' <2 '쥐'

websearch_to_tsquery ( [ 구성 regconfig, ] 질의 텍스트 ) → tsquery

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

websearch_to_tsquery('english', ''뚱뚱한 쥐' 또는 고양이 개')'뚱뚱한' <- '쥐' | '고양이' & '개'

쿼리트리 ( tsquery ) → 텍스트

a의 색인 생성 가능한 부분을 표현합니다.tsquery. 비어 있거나 그냥 결과입니다.T색인 생성이 불가능한 쿼리를 나타냅니다.

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

설정중량 ( 벡터 ts벡터, 무게 "문자" ) → ts벡터

지정된 할당무게의 각 요소에벡터.

setweight('fat:2,4 cat:3 쥐:5B'::tsVector, 'A')'고양이':3A '뚱뚱':2A,4A '쥐':5A

설정중량 ( 벡터 ts벡터, 무게 "문자", 어휘 텍스트[] ) → ts벡터

지정된 할당무게의 요소에벡터다음에 나열되어 있음어휘. 의 문자열어휘추가 처리 없이 어휘소를 있는 그대로 사용합니다. 어떤 어휘소와도 일치하지 않는 문자열벡터무시됩니다.

setweight('fat:2,4 cat:3 쥐:5,6B'::tsVector, 'A', 'cat,rat')'고양이':3A '뚱뚱':2,4 '쥐':5A,6A

스트립 ( ts벡터 ) → ts벡터

에서 위치와 가중치를 제거합니다.ts벡터.

strip('fat:2,4 cat:3 쥐:5A'::tsVector)'고양이' '뚱뚱한' '쥐'

to_tsquery ( [ 구성 regconfig, ] 질의 텍스트 ) → tsquery

텍스트를 a로 변환합니다.tsquery, 지정된 구성 또는 기본 구성에 따라 단어를 정규화합니다. 단어는 유효한 단어로 결합되어야 합니다.tsquery연산자.

to_tsquery('english', 'The & Fat & Rats')'지방' & '쥐'

to_tsVector ( [ 구성 regconfig, ] 토토 사이트 텍스트 ) → ts벡터

텍스트를 a로 변환ts벡터, 지정된 구성 또는 기본 구성에 따라 단어를 정규화합니다. 결과에는 위치 정보가 포함됩니다.

to_tsVector('english', '살찐 쥐')'지방':2 '쥐':3

to_ts벡터 ( [ 구성 regconfig, ] 토토 사이트 json ) → ts벡터

to_tsVector ( [ 구성 regconfig, ] 토토 사이트 jsonb ) → ts벡터

JSON 토토 사이트의 각 문자열 값을 다음으로 변환합니다.ts벡터, 지정된 구성 또는 기본 구성에 따라 단어를 정규화합니다. 그런 다음 결과를 토토 사이트 순서대로 연결하여 출력을 생성합니다. 위치 정보는 각 문자열 값 쌍 사이에 하나의 불용어가 존재하는 것처럼 생성됩니다. (조심하세요)토토 사이트 주문JSON 객체의 필드는 입력이 다음과 같은 경우 구현에 따라 다릅니다.jsonb; 예제의 차이점을 살펴보세요.)

to_tsVector('english', '"aa": "살찐 쥐", "b": "dog"'::json)'개':5 '뚱뚱':2 '쥐':3

to_tsVector('english', '"aa": "살찐 쥐", "b": "dog"'::jsonb)'개':1 '뚱뚱':4 '쥐':5

json_to_tsVector ( [ 구성 regconfig, ] 토토 사이트 json, 필터 jsonb ) → ts벡터

jsonb_to_tsVector ( [ 구성 regconfig, ] 토토 사이트 jsonb, 필터 jsonb ) → ts벡터

다음에서 요청한 JSON 토토 사이트의 각 항목을 선택합니다.필터그리고 각각을 a로 변환합니다.ts벡터, 지정된 구성 또는 기본 구성에 따라 단어를 정규화합니다. 그런 다음 결과를 토토 사이트 순서대로 연결하여 출력을 생성합니다. 선택한 항목의 각 쌍 사이에 불용어가 하나씩 존재하는 것처럼 위치 정보가 생성됩니다. (조심하세요)토토 사이트 순서JSON 객체의 필드는 입력이 다음과 같은 경우 구현에 따라 다릅니다.jsonb.) 그필터반드시jsonb다음 키워드가 0개 이상 포함된 배열:"문자열"(모든 문자열 값을 포함하려면),"숫자"(모든 숫자 값을 포함하려면),"부울"(모든 부울 값을 포함하려면),"열쇠"(모든 키를 포함하려면) 또는"모두"(위의 모든 내용을 포함). 특별한 경우로,필터이러한 키워드 중 하나인 간단한 JSON 값일 수도 있습니다.

json_to_tsVector('english', '"a": "The Fat Rats", "b": 123'::json, '["string", "numeric"]')'123':5 '뚱뚱':2 '쥐':3

json_to_tsVector('english', '"cat": "The Fat Rats", "dog": 123'::json, '"all"')'123':9 '고양이':1 '개':7 '뚱뚱':4 '쥐':5

ts_delete ( 벡터 ts벡터, 어법 텍스트 ) → ts벡터

주어진 항목을 모두 제거합니다.어법에서벡터.어휘문자열은 추가 처리 없이 있는 그대로 어휘소로 처리됩니다.

ts_delete('fat:2,4 cat:3 쥐:5A'::tsVector, 'fat')'고양이':3 '쥐':5A

ts_delete ( 벡터 ts벡터, 어휘 텍스트[] ) → ts벡터

어휘소의 모든 항목을 제거합니다.어휘에서벡터. 의 문자열어휘추가 처리 없이 어휘소를 있는 그대로 사용합니다. 어떤 어휘소와도 일치하지 않는 문자열벡터무시됩니다.

ts_delete('fat:2,4 cat:3 쥐:5A'::tsVector, ARRAY['fat','rat'])'고양이':3

ts_filter ( 벡터 ts벡터, 가중치 "문자"[] ) → ts벡터

주어진 요소만 선택합니다가중치에서벡터.

ts_filter('fat:2,4 cat:3b,7c rat:5A'::tsVector, 'a,b')'고양이':3B '쥐':5A

ts_headline ( [ 구성 regconfig, ] 토토 사이트 텍스트, 질의 tsquery [, 옵션 텍스트 ] ) → 텍스트

다음에 대한 일치 항목을 축약된 형식으로 표시합니다.질의에서토토 사이트, 이는 a가 아닌 원시 텍스트여야 합니다.ts벡터. 토토 사이트의 단어는 쿼리와 일치하기 전에 지정된 구성 또는 기본 구성에 따라 정규화됩니다. 이 기능의 사용은에서 논의됩니다.섹션 12.3.4, 사용 가능한 항목도 설명합니다.옵션.

ts_headline('뚱뚱한 고양이가 쥐를 먹었습니다.', '고양이')뚱뚱한 <b고양이</b가 쥐를 먹었습니다.

ts_headline ( [ 구성 regconfig, ] 토토 사이트 json, 질의 tsquery [, 옵션 텍스트 ] ) → 텍스트

ts_headline ( [ 구성 regconfig, ] 토토 사이트 jsonb, 질의 tsquery [, 옵션 텍스트 ] ) → 텍스트

다음에 대한 일치 항목을 축약된 형식으로 표시합니다.질의JSON 내의 문자열 값에서 발생하는토토 사이트. 참조섹션 12.3.4자세한 내용은.

ts_headline('"cat":"비가 내리는 고양이와 개"'::jsonb, 'cat')"cat": "비가 내리는 <b고양이와 개</b"

ts_rank ( [ 가중치 진짜[], ] 벡터 ts벡터, 질의 tsquery [, 정규화 정수 ] ) → 진짜

얼마나 잘했는지 보여주는 점수를 계산합니다.벡터일치함질의. 참조섹션 12.3.3자세한 내용은.

ts_rank(to_tsVector('비 내리는 고양이와 개'), '고양이')0.06079271

ts_rank_cd ( [ 가중치 진짜[], ] 벡터 ts벡터, 질의 tsquery [, 정규화 정수 ] ) → 진짜

얼마나 잘했는지 보여주는 점수를 계산합니다.벡터일치함질의, 커버 밀도 알고리즘을 사용합니다. 참조섹션 12.3.3자세한 내용은.

ts_rank_cd(to_tsVector('비 내리는 고양이와 개'), '고양이')0.1

ts_rewrite ( 질의 tsquery, 대상 tsquery, 대체 tsquery ) → tsquery

다음 항목을 대체합니다.대상대체내부질의. 참조섹션 12.4.2.1자세한 내용은.

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

ts_rewrite ( 질의 tsquery, 선택 텍스트 ) → tsquery

의 일부를 대체합니다.질의a를 실행하여 얻은 대상 및 대체물에 따라선택명령. 참조섹션 12.4.2.1자세한 내용은.

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

tsquery_phrase ( 쿼리1 tsquery, 쿼리2 tsquery ) → tsquery

일치하는 구문을 검색하는 구문 쿼리를 구성합니다.쿼리1그리고쿼리2연속 어휘에서 (동일<-연산자).

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

tsquery_phrase ( 쿼리1 tsquery, 쿼리2 tsquery, 거리 정수 ) → tsquery

일치하는 구문을 검색하는 구문 쿼리를 구성합니다.쿼리1그리고쿼리2정확히 발생함거리어휘가 분리되어 있습니다.

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

tsVector_to_array ( ts벡터 ) → 텍스트[]

a를 변환합니다ts벡터어휘 배열로.

tsVector_to_array('fat:2,4 cat:3 쥐:5A'::tsVector)고양이,뚱뚱,쥐

unnest ( ts벡터 ) → 레코드 집합 ( 어휘 텍스트, 위치 작은 정수[], 가중치 텍스트 )

확장 ats벡터어휘당 하나씩 행 집합으로.

unnest('cat:3 fat:2,4 rat:5A'::tsVector)에서 * 선택

어휘 | 직위 | 무게
--------+------------+---------
 고양이 | 3 | 디
 지방 | 2,4 | 디,디
 쥐 | 5 | A

참고

옵션을 허용하는 모든 텍스트 검색 기능regconfig인수는 다음에 의해 지정된 구성을 사용합니다.default_text_search_config해당 인수가 생략된 경우.

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

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

기능

설명

ts_debug ( [ 구성 regconfig, ] 토토 사이트 텍스트 ) → 레코드 세트 ( 별칭 텍스트, 설명 텍스트, 토큰 텍스트, 사전 등록사전[], 사전 regdictionary, 어휘 텍스트[] )

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

ts_debug('english', '가장 밝은 초신성')(asciiword,"Word, 모든 ASCII",The,english_stem,english_stem,) ...

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

입력 토큰이 사전에 알려진 경우 대체 어휘 배열을 반환하고, 토큰이 사전에 알려져 있지만 중지 단어인 경우 빈 배열을 반환하며, 알려진 단어가 아닌 경우 NULL을 반환합니다. 보다섹션 12.8.3자세한 내용은.

ts_lexize('english_stem', '별')

ts_parse ( 파서_이름 텍스트, 토토 사이트 텍스트 ) → 레코드 집합 ( 토키드 정수, 토큰 텍스트 )

에서 토큰을 추출합니다토토 사이트명명된 파서를 사용합니다. 참조섹션 12.8.2자세한 내용은.

ts_parse('기본값', 'foo - 바')(1,foo) ...

ts_parse ( parser_oid oid, 토토 사이트 텍스트 ) → 레코드 세트 ( 토키드 정수, 토큰 텍스트 )

에서 토큰을 추출합니다토토 사이트OID로 지정된 파서를 사용합니다. 참조섹션 12.8.2자세한 내용은.

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

ts_token_type ( 파서_이름 텍스트 ) → 레코드 세트 ( 토키드 정수, 별칭 텍스트, 설명 텍스트 )

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

ts_token_type('기본값')(1,asciiword,"단어, 모두 ASCII") ...

ts_token_type ( parser_oid oid ) → 레코드 세트 ( 토키드 정수, 별칭 텍스트, 설명 텍스트 )

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

ts_token_type(3722)(1,asciiword,"단어, 모두 ASCII") ...

ts_stat ( sqlquery 텍스트 [, 가중치 텍스트 ] ) → 레코드 세트 ( 단어 텍스트, ndoc 정수, 넨트리 정수 )

다음을 실행합니다sqlquery, 단일을 반환해야 함ts벡터열이며, 데이터에 포함된 각 개별 어휘소에 대한 통계를 반환합니다. 참조섹션 12.4.4자세한 내용은.

ts_stat('아팟에서 벡터 선택')(foo,10,15) ...


수정사항 제출

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