지원되는 버전 :현재(17) /16 / 15 / 14 / 13
개발 버전 :18 / Devel
지원되지 않는 버전 :12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3
이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

F.21. 토토 사이트 추천

이 모듈은 데이터 유형을 구현합니다토토 사이트 추천계층 적 트리와 같은 구조에 저장된 데이터의 레이블을 나타냅니다. 라벨 나무를 통해 검색을위한 광범위한 시설이 제공됩니다.

F.21.1. 정의

a레이블는 영숫자 및 밑줄의 순서입니다 (예 : C 로케일의 문자a-za-z0-9_허용). 레이블은 256 자 미만이어야합니다.

예 :42, personal_services

a레이블 경로예를 들어 도트로 분리 된 0 이상의 레이블의 시퀀스l1.l2.l3, 계층 적 트리의 루트에서 특정 노드까지 경로를 나타냅니다. 레이블 경로의 길이는 65535 라벨을 초과 할 수 없습니다.

예 :top.countries.europe.russia

the토토 사이트 추천모듈은 몇 가지 데이터 유형을 제공합니다.

  • 토토 사이트 추천레이블 경로를 저장합니다.

  • LQuery일치하는 일반 표현과 같은 패턴을 나타냅니다토토 사이트 추천값. 간단한 단어는 경로 내에서 해당 레이블과 일치합니다. 별 기호 (*)는 0 개 이상의 레이블과 일치합니다. 예를 들어:

    foo정확한 레이블 경로 일치foo*.foo.*레이블이 포함 된 라벨 경로 일치foo*.foo마지막 레이블이있는 라벨 경로 일치foo

    스타 기호는 또한 일치 할 수있는 레이블 수를 제한하기 위해 정량화 될 수 있습니다.

    *n정확히 일치n라벨*n,적어도 일치n라벨*n,m적어도 일치n하지만m라벨*,m최대 일치M레이블 -*0,M

    비 스타 레이블의 끝에 몇 가지 수정자가 있습니다.LQuery정확히 일치하는 것 이상으로 일치시키기 위해 :

    @예를 들어 사례 비면적으로 일치a@매치a
    *           예를 들어이 접두사와 라벨을 일치시킵니다foo*매치foobar%초기 밑줄을 구분 한 단어 일치

    행동의 동작%조금 복잡합니다. 전체 레이블이 아닌 단어와 일치하려고합니다. 예를 들어foo_bar%매치foo_bar_baz하지만foo_barbaz. 와 결합 된 경우*, 접두사 매칭은 각 단어에 개별적으로 적용됩니다 (예 :foo_bar%*매치foo1_bar2_baz하지만FOO1_BR2_BAZ.

    또한 분리 된 몇 가지 수정 된 레이블을 쓸 수 있습니다|(또는) 해당 라벨과 일치하려면!(아님) 대안과 일치하지 않는 레이블과 일치하기 시작합니다.

    여기에 주석이 달린 예는LQuery:

    상단.*0,2 .sport*@.! 풋볼 | Tennis.russ*| 스페인
    에이.  비.     기음.      디.               이자형.

    이 쿼리는 다음과 같은 라벨 경로와 일치합니다.

    1. 레이블로 시작합니다TOP

    2. 그리고 다음은 이전에 0에서 두 개의 레이블이 있습니다

    3. 케이스 감수성 접두사로 시작하는 레이블스포츠

    4. 그러면 일치하지 않는 레이블축구NOR테니스

    5. 그런 다음로 시작하는 레이블로 끝납니다.Russ또는 정확히 일치하는스페인.

  • ltxtQuery일치하는 전체 텍스트 검색 패턴을 나타냅니다토토 사이트 추천값.ltxtQuery값은 단어가 포함되어있을 가능성이 있습니다.@, *, %끝에; 수정자는와 동일한 의미를 갖습니다.LQuery. 단어는와 결합 할 수 있습니다.&(및),|(또는),!(아님) 및 괄호. 의 주요 차이점LQueryltxtQuery레이블 경로에서의 위치와 상관없이 단어와 일치합니다.

    여기 예입니다ltxtQuery:

    유럽 및 러시아*@ &! 교통

    이것은 레이블을 포함하는 경로와 일치합니다유럽로 시작하는 모든 레이블러시아(사례에 민감하지 않음) 라벨을 포함하는 경로는 아닙니다운송. 경로 내 에서이 단어의 위치는 중요하지 않습니다. 또한%사용됩니다.이 단어는 위치에 관계없이 라벨 내의 밑줄 내에서 구분 된 단어와 일치 할 수 있습니다.

참고 :ltxtQuery기호 사이에 공백을 허용하지만토토 사이트 추천andLQuerydo not.

F.21.2. 운영자 및 기능

타입토토 사이트 추천일반적인 비교 연산자가 있습니다=, <, <, , <=, =. 비교는 트리 트래버스 순서대로 정렬되며 노드의 어린이는 레이블 텍스트로 정렬됩니다. 또한에 표시된 전문 운영자표 F-14사용 가능합니다.

표 F-14.토토 사이트 추천운영자

운영자 반환 설명
토토 사이트 추천 @ 토토 사이트 추천 부울 오른쪽 (또는 평등)의 조상 인 논증이 남아 있습니다.
토토 사이트 추천 <@ 토토 사이트 추천 부울 오른쪽의 후손 (또는 동등한)?
토토 사이트 추천 ~ LQuery 부울 do토토 사이트 추천매치LQuery?
LQuery ~ 토토 사이트 추천 부울 do토토 사이트 추천매치LQuery?
토토 사이트 추천 ? lQuery [] 부울 do토토 사이트 추천일치LQuery배열에서?
lQuery [] ? 토토 사이트 추천 부울 do토토 사이트 추천일치LQuery배열에서?
토토 사이트 추천 @ ltxtQuery 부울 do토토 사이트 추천매치ltxtQuery?
ltxtQuery @ 토토 사이트 추천 부울 do토토 사이트 추천매치ltxtQuery?
토토 사이트 추천 || 토토 사이트 추천 토토 사이트 추천 Concatenate토토 사이트 추천Paths
토토 사이트 추천 || 텍스트 토토 사이트 추천 텍스트 변환토토 사이트 추천and concatenate
텍스트 || 토토 사이트 추천 토토 사이트 추천 텍스트 변환토토 사이트 추천및 Concatenate
토토 사이트 추천 [] @ 토토 사이트 추천 부울 배열은 조상이 포함되어 있습니까토토 사이트 추천?
토토 사이트 추천 <@ 토토 사이트 추천 [] 부울 배열은 조상이 포함되어 있습니다토토 사이트 추천?
토토 사이트 추천 [] <@ 토토 사이트 추천 부울 배열은의 후손이 포함되어 있습니까토토 사이트 추천?
토토 사이트 추천 @ 토토 사이트 추천 [] 부울 배열은의 후손이 포함되어 있습니다토토 사이트 추천?
토토 사이트 추천 [] ~ LQuery 부울 배열이 모든 경로 일치를 포함합니까LQuery?
LQuery ~ 토토 사이트 추천 [] 부울 배열이 모든 경로 일치를 포함합니까LQuery?
토토 사이트 추천 [] ? lQuery [] 부울 do토토 사이트 추천배열은 어떤 경로와 일치하는 경로를 포함합니다LQuery?
lQuery [] ? 토토 사이트 추천 [] 부울 do토토 사이트 추천배열 일치하는 경로가 포함되어 있습니다LQuery?
토토 사이트 추천 [] @ ltxtQuery 부울 배열은 모든 경로 일치를 포함합니까ltxtQuery?
ltxtQuery @ 토토 사이트 추천 [] 부울 배열은 모든 경로 일치를 포함합니까ltxtQuery?
토토 사이트 추천 [] ?@ 토토 사이트 추천 토토 사이트 추천 조상 인 첫 번째 배열 항목토토 사이트 추천; null if none
토토 사이트 추천 [] ? <@ 토토 사이트 추천 토토 사이트 추천 첫 번째 배열 항목의 후손 인토토 사이트 추천; null if none
토토 사이트 추천 [] ? ~ LQuery 토토 사이트 추천 일치하는 첫 번째 배열 항목lQuery; null if none
토토 사이트 추천 [] ?@ ltxtQuery 토토 사이트 추천 일치하는 첫 번째 배열 항목ltxtQuery; null if none

연산자<@, @, @and~아날로그^<@, ^@, ^@, ^~는 인덱스를 사용하지 않는 것을 제외하고 동일합니다. 테스트 목적으로 만 유용합니다.

가용 함수는에 표시됩니다.표 F-15.

표 F-15.토토 사이트 추천기능

기능 반환 유형 설명 example 결과
Sub토토 사이트 추천 (토토 사이트 추천, int start, int end) 토토 사이트 추천 subpath of토토 사이트 추천위치에서시작위치END-1 (0에서 카운트) sub토토 사이트 추천 ( 'top.child1.child2', 1,2) Child1
subpath (토토 사이트 추천, int offset, int len) 토토 사이트 추천 subpath of토토 사이트 추천위치에서 시작오프셋, 길이Len. 만약에오프셋부정적이므로, SubPath는 경로 끝에서 멀리 떨어져 시작합니다. 만약에Len부정적이고 경로 끝에서 많은 레이블을 남겨 두십시오. subpath ( 'top.child1.child2', 0,2) top.child1
subpath (토토 사이트 추천, int 오프셋) 토토 사이트 추천 subpath of토토 사이트 추천위치에서 시작오프셋, 경로 끝으로 확장. 만약에오프셋부정적입니다. Subpath는 경로 끝에서 멀리 떨어져 시작합니다. subpath ( 'top.child1.child2', 1) child1.child2
nlevel (토토 사이트 추천) Integer 경로의 레이블 수 nlevel ( 'top.child1.child2') 3
Index (토토 사이트 추천 A, 토토 사이트 추천 B) 정수 첫 번째 발생 위치Bina; -1 찾을 수없는 경우 index ( '0.1.2.3.5.4.5.5.6.8.5.6.8', '5.6') 6
index (Ltree A, Ltree B, int 오프셋) 정수 첫 번째 발생 위치Bina오프셋; 부정적인오프셋start-오프셋경로 끝의 레이블 index ( '0.1.2.3.5.4.5.5.8.5.6.8', '5.6', -4) 9
text2토토 사이트 추천 (text) 토토 사이트 추천 캐스트텍스트to토토 사이트 추천
토토 사이트 추천2text (토토 사이트 추천) 텍스트 캐스트토토 사이트 추천to텍스트
LCA (토토 사이트 추천, 토토 사이트 추천, ...) 토토 사이트 추천 경로의 가장 긴 공통 조상 (최대 8 개의 인수 지원) LCA ( '1.2.3', '1.2.3.4.5.6') 1.2
LCA (토토 사이트 추천 []) 토토 사이트 추천 배열에서 경로의 가장 긴 공통 조상 LCA (배열 [ '1.2.3':: 토토 사이트 추천, '1.2.3.4']) 1.2

F.21.3. 인덱스

토토 사이트 추천표시된 연산자 속도를 높일 수있는 여러 유형의 인덱스를 지원합니다.

  • B-Tree Index over토토 사이트 추천: <, <=, =, =,

  • Gist Index over토토 사이트 추천: <, <=, =, =, , @, <@, @, ~, ?

    그러한 색인 생성 예 :

    GIST (PATH)를 사용하여 테스트시 인덱스 CATE PATH_GIST_IDX 생성;
  • Gist Index over토토 사이트 추천 []: 토토 사이트 추천 [] <@ 토토 사이트 추천, 토토 사이트 추천 @ 토토 사이트 추천 [], @, ~, ?

    그러한 색인 생성 예 :

    GIST (array_path)를 사용하여 테스트에서 인덱스 PATH_GIST_IDX 작성;

    참고 :이 인덱스 유형은 손실됩니다.

F.21.4. 예

이 예제는 다음 데이터를 사용합니다 (파일에서도 사용 가능Contrib/토토 사이트 추천/토토 사이트 추천test.sql소스 분포에서) :

테이블 테스트 생성 (Path Ltree);
테스트 값에 삽입 ( 'TOP');
테스트 값에 삽입 ( 'top.science');
테스트 값에 삽입 ( 'top.science.astronomy');
테스트 값에 삽입 ( 'top.science.astronomy.astrophysics');
테스트 값에 삽입 ( 'top.science.astronomy.cosmology');
테스트 값에 삽입 ( 'top.hobbies');
테스트 값에 삽입 ( 'top.hobbies.amateurs_astronomy');
테스트 값에 삽입 ( 'top.collections');
테스트 값에 삽입 ( 'top.collections.pictures');
테스트 값에 삽입 ( 'top.collections.pictures.astronomy');
테스트 값에 삽입 ( 'top.collections.pictures.astronomy.stars');
테스트 값에 삽입 ( 'top.collections.pictures.astronomy.galaxies');
테스트 값에 삽입 ( 'top.collections.pictures.astronomy.astronauts');
GIST (PATH)를 사용하여 테스트시 인덱스 PATH_GIST_IDX를 만듭니다.
btree (path);을 사용하여 테스트에서 색인 path_idx를 만듭니다.

이제 테이블이 있습니다테스트아래에 표시된 계층 구조를 설명하는 데이터가 채워져 있습니다.

상단
                     / |  \
             과학 취미 컬렉션
                 / |              \
        천문학 Amateurs_astronomy 사진
           / \ |
천체 물리학 우주론 천문학
                                        / |    \
                                 은하의 스타 우주 비행사

우리는 상속을 할 수 있습니다 :

토토 사이트 추천test = 경로 <@ 'top.science'가있는 테스트에서 경로를 선택합니다.
                길
---------------------------------------
 상위. 과학
 Top.science.astronomy
 Top.science.astronomy.astrophysics
 top.science.astronomy.cosmology
(4 줄)

경로 일치의 몇 가지 예는 다음과 같습니다.

토토 사이트 추천test = 경로 ~ '*.astronomy.*';
                     길
-------------------------------------------------------
 Top.science.astronomy
 Top.science.astronomy.astrophysics
 top.science.astronomy.cosmology
 Top.collections.pictures.astronomy
 top.collections.pictures.astronomy.stars
 top.collections.pictures.astronomy.galaxies
 Top.Collections.pictures.astronomy.astronauts
(7 줄)

토토 사이트 추천test = 경로 ~ '*.! pictures@.*. 천문학.*';
                길
---------------------------------------
 Top.science.astronomy
 Top.science.astronomy.astrophysics
 top.science.astronomy.cosmology
(3 줄)

다음은 전체 텍스트 검색의 몇 가지 예입니다.

토토 사이트 추천test = 경로 @ 'astro*% &! pictures @';
                길
---------------------------------------
 Top.science.astronomy
 Top.science.astronomy.astrophysics
 top.science.astronomy.cosmology
 top.hobbies.amateurs_astronomy
(4 줄)

토토 사이트 추천test = path @ 'astro* &! pictures @';
                길
---------------------------------------
 Top.science.astronomy
 Top.science.astronomy.astrophysics
 top.science.astronomy.cosmology
(3 줄)

함수 사용 경로 구성 :

토토 사이트 추천test = SubPath (Path, 0,2) || 'Space'|| SubPath (Path, 2)는 Path <@ 'top.science.astronomy';
                 ?열?
-----------------------------------------------
 Top.science.space.astronomy
 top.science.space.astronomy.astrophysics
 top.science.space.astronomy.cosmology
(3 줄)

경로에서 지정된 위치에 레이블을 삽입하는 SQL 함수를 만들어이를 단순화 할 수 있습니다.

함수 생성 INS_LABEL (토토 사이트 추천, int, 텍스트)은 토토 사이트 추천를 반환합니다
    AS 'SELECT SUBPATH ($ 1,0, $ 2) || $ 3 || Subpath ($ 1, $ 2); '
    언어 SQL 불변;

토토 사이트 추천test = select <@ 'top.science.astronomy'에서 테스트에서 ins_label (Path, 2, 'Space');
                INS_LABEL
-----------------------------------------------
 Top.science.space.astronomy
 top.science.space.astronomy.astrophysics
 top.science.space.astronomy.cosmology
(3 줄)

F.21.5. 변환

|토토 사이트 추천pl/python의 입력. 확장자는라고합니다.토토 사이트 추천_plpythonu, 토토 사이트 추천_plpython2u토토 사이트 추천_plpython3u(참조PostgreSQL : 문서 : 9.6 : 롤 토토 2 vs. 롤 토토 3PL/Python 이름 지정 규칙). 이 변환을 설치하고 함수를 만들 때 지정하면토토 사이트 추천값은 Python 목록에 매핑됩니다. (그러나 그 반대는 현재 지원되지 않습니다.)

주의

변환 확장 기능을 동일한 스키마에에 설치하는 것이 좋습니다토토 사이트 추천. 그렇지 않으면 Transform Extension의 스키마에 적대적인 사용자가 정의한 개체가 포함 된 경우 설치 시간 보안 위험이 있습니다.

F.21.6. 저자

모든 작업은 Teodor Sigaev (에 의해 수행되었습니다.) 및 Oleg Bartunov (). 보다http : //www.sai.msu.su/~megera/postgres/gist/추가 정보. 저자는 유용한 토론에 대해 Eugeny Rodichev에게 감사의 말씀을 전합니다. 의견과 버그 보고서를 환영합니다.