9.13. 롤 토토 검색 기능 및 연산자#

표 9.42, 표 9.43표 9.44전체 롤 토토 검색을 위해 제공되는 기능과 연산자를 요약합니다. 보다토토 : 문서 : 16 : 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 @@@ tsquery부울

tsquery @@@ TSVECTOR부울

이것은 더 이상 사용되지 않는 동의어입니다@@.

TO_TSVECTOR ( 'Fat Cats Ate Rats') @@@ 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 2tsquerys together, 입력 쿼리와 일치하는 문서와 일치하는 쿼리를 생성합니다.

'fat | 쥐 ':: 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유형에 사용할 수 있습니다TSVECTORandtsquery. 롤 토토 검색에는 그다지 유용하지 않지만 예를 들어 이러한 유형의 열에서 고유 인덱스를 구축 할 수 있습니다.

표 9.43. 롤 토토 검색 기능

기능

설명

예제

array_to_tsvector(롤 토토 []) →TSVECTOR

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

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

get_current_ts_config() →RegConfig

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

get_current_ts_config ()영어

길이(tsvector) →정수

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

지정된 지정weight의 각 요소에Vector.

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

setweight(Vector tsvector, weight "char", lexemes 롤 토토 []) →TSVECTOR

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

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

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

json_to_tsvector([config RegConfig,]문서 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

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

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

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) →Setof Record(lexeme 롤 토토, 위치 smallint [], 웨이트 롤 토토)

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

선택 * From Unnest ( '고양이 : 3 지방 : 2,4 쥐 : 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, 토큰 롤 토토) →롤 토토 []

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

ts_lexize ( 'English_stem', 'stars')Star

TS_PARSE(parser_name 롤 토토, 문서 롤 토토) →Setof Record(TOKID 정수, 토큰 롤 토토)

토큰 추출물문서명명 된 파서를 사용합니다. 보다섹션 12.8.2자세한 내용.

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

TS_PARSE(parser_oid OID, 문서 롤 토토) →Setof Record(TOKID 정수, 토큰 롤 토토)

TOKENS를 추출하여문서OID로 지정된 파서를 사용합니다. 보다섹션 12.8.2자세한 내용.

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

TS_TOKEN_TYPE(parser_name 롤 토토) →Setof Record(TOKID Integer, 별명 롤 토토, 설명 롤 토토)

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

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

TS_TOKEN_TYPE(parser_oid OID) →Setof Record(TOKID Integer, 별명 롤 토토, 설명 롤 토토)

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

TS_TOKEN_TYPE (3722)(1, asciiword, "Word, All Ascii") ...

TS_STAT(sqlquery 롤 토토[, 웨이트 롤 토토]) →기록(Word 롤 토토, ndoc Integer, Nentry 정수)

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

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


수정 제출

올바르지 않은 문서에 아무것도 표시되면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면