Mô -đun này thực hiện kiểu dữ liệukèo bóng đá hom nay
Để biểu diễn nhãn dữ liệu được lưu trữ trong cấu trúc giống như cây phân cấp. Các cơ sở rộng lớn để tìm kiếm qua các cây nhãn được cung cấp.
Anhãnlà một chuỗi các ký tự chữ và số và dấu gạch dưới (ví dụ, trong c locale các ký tựA-ZA-Z0-9_
được cho phép). Nhãn phải dài dưới 256 ký tự.
ví dụ:42
, cá nhân_service
Ađường kèo bóng đá hom nay nhãnlà một chuỗi không hoặc nhiều nhãn được phân tách bằng các dấu chấm, ví dụL1.L2.L3
, đại diện cho một đường kèo bóng đá hom nay từ gốc của một cây phân cấp đến một nút cụ thể. Độ dài của đường kèo bóng đá hom nay nhãn không thể vượt quá 65535 nhãn.
Ví dụ:Top.Countries.Europe.Russia
Thekèo bóng đá hom nay
Mô -đun cung cấp một số loại dữ liệu:
kèo bóng đá hom nay
lưu trữ đường kèo bóng đá hom nay nhãn.
lquery
đại diện cho một mẫu giống như biểu hiện thông thường để kết hợpkèo bóng đá hom nay
Giá trị. Một từ đơn giản phù hợp với nhãn đó trong một đường kèo bóng đá hom nay. Một ký hiệu ngôi sao (*
11717_11762
fooPhù hợp với đường kèo bóng đá hom nay nhãn chính xácfoo
*.foo.*Phù hợp với bất kỳ đường kèo bóng đá hom nay nhãn nào chứa nhãnfoo
*.fooPhù hợp với bất kỳ đường kèo bóng đá hom nay nhãn nào có nhãn cuối cùng làfoo
Biểu tượng ngôi sao cũng có thể được định lượng để hạn chế số lượng nhãn chúng có thể khớp:
*n
khớp chính xácn
Nhãn*n
,Trận đấu ít nhấtn
Nhãn*n
,M
Trận đấu ít nhấtn
nhưng không quáM
Nhãn*,M
Kết hợp nhiều nhấtM
Nhãn - giống như*0,M
Có một số sửa đổi có thể được đặt ở cuối nhãn không sao tronglquery
Để làm cho nó phù hợp hơn chỉ là khớp chính xác:
@Ví dụ, phù hợp với trường hợp không tương ứngA@
MatchesA
* Phù hợp với bất kỳ nhãn nào với tiền tố này, ví dụfoo*
MatchesFoobar
%phù hợp với các từ được đánh dấu bằng dấu gạch dưới
Hành vi của%
hơi phức tạp. Nó cố gắng để phù hợp với các từ hơn là toàn bộ nhãn. Ví dụfoo_bar%
khớpfoo_bar_baz
nhưng khôngfoo_barbaz
. Nếu kết hợp với*
, Tiền tố phù hợp áp dụng riêng cho từng từ, ví dụfoo_bar%*
Matchesfoo1_bar2_baz
nhưng khôngFOO1_BR2_BAZ
.
Ngoài ra, bạn có thể viết một số nhãn có thể sửa đổi được phân tách bằng|
(hoặc) để phù hợp với bất kỳ nhãn nào trong số đó và bạn có thể đặt!
14768_14852
Đây là một ví dụ được chú thích củalquery
:
Top.*0,2 .Sport*@.! Bóng đá | Tennis.russ*| Tây Ban Nha Một. b. c. d. e.
Truy vấn này sẽ phù hợp với bất kỳ đường kèo bóng đá hom nay nhãn nào:
Bắt đầu bằng nhãnTOP
và Next có từ 0 đến hai nhãn trước
Một nhãn bắt đầu với tiền tố không nhạy cảm với trường hợpSport
Sau đó, một nhãn không khớpbóng đá
NorTennis
Và sau đó kết thúc bằng một nhãn bắt đầu bằngRuss
hoặc khớp chính xácTây Ban Nha
.
LtxtQuery
đại diện cho một mẫu toàn văn-tìm kiếm để kết hợpkèo bóng đá hom nay
Giá trị. MỘTLtxtQuery
Giá trị chứa các từ, có thể với các sửa đổi@
, *
, %
Cuối cùng; các bộ sửa đổi có ý nghĩa giống như tronglquery
. Các từ có thể được kết hợp với&
(và),|
(hoặc),!
(không) và dấu ngoặc đơn. Sự khác biệt chính từlquery
làLtxtQuery
khớp với các từ mà không liên quan đến vị trí của chúng trong đường kèo bóng đá hom nay nhãn.
Đây là một ví dụLtxtQuery
:
Châu Âu & Nga*@ &! Giao thông vận tải
Điều này sẽ khớp với các đường kèo bóng đá hom nay có chứa nhãnChâu Âu
và bất kỳ nhãn nào bắt đầu bằngNga
(không nhạy cảm với trường hợp), nhưng không phải đường kèo bóng đá hom nay chứa nhãnGiao thông vận tải
. Vị trí của những từ này trong đường kèo bóng đá hom nay không quan trọng. Ngoài ra, khi%
được sử dụng, từ này có thể được khớp với bất kỳ từ nào được phân tách trong một nhãn, bất kể vị trí.
Lưu ý:LtxtQuery
Cho phép khoảng trắng giữa các ký hiệu, nhưngkèo bóng đá hom nay
vàlquery
Không.
loại17938_17945
Có toán tử so sánh thông thường=
, <
, <
, ,
<=
, =
. So sánh sắp xếp theo thứ tự của một cây truyền tải, với những đứa trẻ của một nút được sắp xếp theo văn bản nhãn. Ngoài ra, các toán tử chuyên dụng được hiển thị trongBảng F.13có sẵn.
Bảng F.13.kèo bóng đá hom nay
Người vận hành
18892_18902 | return | Mô tả |
---|---|---|
kèo bóng đá hom nay @ kèo bóng đá hom nay |
Boolean |
là đối số trái một tổ tiên bên phải (hoặc bằng)? |
kèo bóng đá hom nay <@ kèo bóng đá hom nay |
Boolean |
là đối số trái là hậu duệ của bên phải (hoặc bằng)? |
kèo bóng đá hom nay ~ lquery |
Boolean |
khôngkèo bóng đá hom nay khớplquery ? |
lquery ~ kèo bóng đá hom nay |
Boolean |
khôngkèo bóng đá hom nay Matchlquery ? |
kèo bóng đá hom nay ? lquery [] |
Boolean |
khôngkèo bóng đá hom nay khớp với bất kỳlquery trong mảng? |
lquery [] ? kèo bóng đá hom nay |
Boolean |
khôngkèo bóng đá hom nay khớp với bất kỳlquery 20842_20854 |
kèo bóng đá hom nay @ LtxtQuery |
Boolean |
khôngkèo bóng đá hom nay khớpLtxtQuery ? |
LtxtQuery @ kèo bóng đá hom nay |
Boolean |
khôngkèo bóng đá hom nay khớpLtxtQuery ? |
kèo bóng đá hom nay || kèo bóng đá hom nay |
kèo bóng đá hom nay |
Concatenatekèo bóng đá hom nay đường kèo bóng đá hom nay |
kèo bóng đá hom nay || 21910_21916 |
kèo bóng đá hom nay |
Chuyển đổi văn bản thànhkèo bóng đá hom nay và Concatenate |
Text || kèo bóng đá hom nay |
kèo bóng đá hom nay |
Chuyển đổi văn bản thànhkèo bóng đá hom nay và Concatenate |
kèo bóng đá hom nay [] @ kèo bóng đá hom nay |
Boolean |
Mảng có chứa tổ tiên củakèo bóng đá hom nay ? |
kèo bóng đá hom nay <@ kèo bóng đá hom nay [] |
Boolean |
Mảng có chứa tổ tiên củakèo bóng đá hom nay ? |
kèo bóng đá hom nay [] <@ kèo bóng đá hom nay |
Boolean |
mảng có chứa hậu duệ củakèo bóng đá hom nay ? |
kèo bóng đá hom nay @ kèo bóng đá hom nay [] |
Boolean |
mảng có chứa hậu duệ củakèo bóng đá hom nay ? |
kèo bóng đá hom nay [] ~ lquery |
Boolean |
Mảng có chứa bất kỳ đường kèo bóng đá hom nay nào khớplquery ? |
lquery ~ kèo bóng đá hom nay [] |
Boolean |
Mảng có chứa bất kỳ đường kèo bóng đá hom nay nào khớplquery ? |
kèo bóng đá hom nay [] ? lquery [] |
Boolean |
khôngkèo bóng đá hom nay Mảng chứa bất kỳ đường kèo bóng đá hom nay nào khớp với bất kỳlquery ? |
lquery [] ? kèo bóng đá hom nay [] |
Boolean |
khôngkèo bóng đá hom nay Mảng chứa bất kỳ đường kèo bóng đá hom nay nào khớp với bất kỳlquery ? |
kèo bóng đá hom nay [] @ LtxtQuery |
Boolean |
Mảng có chứa bất kỳ đường kèo bóng đá hom nay nào khớpLtxtQuery ? |
LtxtQuery @ kèo bóng đá hom nay [] |
Boolean |
Mảng có chứa bất kỳ đường kèo bóng đá hom nay nào khớpLtxtquery ? |
kèo bóng đá hom nay [] 25629_25637 kèo bóng đá hom nay |
kèo bóng đá hom nay |
mục nhập mảng đầu tiên là tổ tiên củakèo bóng đá hom nay ; Null nếu không |
kèo bóng đá hom nay [] ? <@ kèo bóng đá hom nay |
kèo bóng đá hom nay |
Mục nhập mảng đầu tiên là hậu duệ củakèo bóng đá hom nay ; Null nếu không |
kèo bóng đá hom nay [] ? ~ lquery |
kèo bóng đá hom nay |
Mục nhập mảng đầu tiên phù hợplquery ; Null nếu không |
kèo bóng đá hom nay [] ?@ LtxtQuery |
kèo bóng đá hom nay |
Mục nhập mảng đầu tiên phù hợpLtxtQuery ; Null nếu không |
Người vận hành<@
, @
, @
và~
Có các chất tương tự^<@
, ^@
, ^@
, ^~
, giống nhau ngoại trừ chúng không sử dụng các chỉ mục. Đây chỉ là hữu ích cho mục đích thử nghiệm.
Các chức năng có sẵn được hiển thị trongBảng F.14.
Bảng F.14.kèo bóng đá hom nay
Chức năng
kèo bóng đá hom nay
Hỗ trợ một số loại chỉ mục có thể tăng tốc các toán tử được chỉ định:
chỉ mục B-cây trênkèo bóng đá hom nay
: <
, <=
, =
, =
,
34321_34339kèo bóng đá hom nay
: <
, <=
, =
, =
, ,
@
, <@
, @
, ~
, ?
Ví dụ về việc tạo một chỉ mục như vậy:
34805_34862
Chỉ mục GIST trênkèo bóng đá hom nay []
: kèo bóng đá hom nay [] <@ kèo bóng đá hom nay
, kèo bóng đá hom nay @ kèo bóng đá hom nay []
, @
, ~
, ?
Ví dụ về việc tạo một chỉ mục như vậy:
Tạo chỉ mục path_gist_idx khi kiểm tra bằng GIST (Array_Path);
Lưu ý: Loại chỉ mục này bị mất.
Ví dụ này sử dụng dữ liệu sau (cũng có sẵn trong tệpPROVELLE
Trong phân phối nguồn):
Tạo thử nghiệm bảng (đường dẫn kèo bóng đá hom nay); Chèn vào các giá trị kiểm tra ('trên cùng'); Chèn vào các giá trị kiểm tra ('top.science'); Chèn vào các giá trị kiểm tra ('top.science.astronomy'); Chèn vào các giá trị kiểm tra ('top.science.astronomy.astrophysics'); Chèn vào các giá trị kiểm tra ('top.science.astronomy.cosmology'); Chèn vào các giá trị kiểm tra ('top.hobbies'); Chèn vào các giá trị kiểm tra ('top.hobbies.amateurs_astronomy'); Chèn vào các giá trị kiểm tra ('top.collections'); Chèn vào các giá trị kiểm tra ('top.collections.pictures'); Chèn vào các giá trị kiểm tra ('top.collections.pictures.astronomy'); Chèn vào các giá trị kiểm tra ('top.collections.pictures.astronomy.stars'); Chèn vào các giá trị kiểm tra ('top.collections.pictures.astronomy.galaxies'); Chèn vào các giá trị kiểm tra ('top.collections.pictures.astronomy.astronauts'); Tạo chỉ mục path_gist_idx khi kiểm tra bằng gist (đường dẫn); Tạo chỉ mục path_idx khi kiểm tra bằng btree (path);
Bây giờ, chúng ta có một bảngtest
Được điền với dữ liệu mô tả hệ thống phân cấp được hiển thị bên dưới:
Top / | \ Bộ sưu tập sở thích khoa học / | \ Thiên văn học nghiệp dư_astronomy hình ảnh / \ | Vật lý thiên văn học thiên văn học / | \ Galaxies Stars Astronauts
Chúng ta có thể kế thừa:
lTreetest = Chọn đường kèo bóng đá hom nay từ bài kiểm tra trong đó đường kèo bóng đá hom nay <@ 'top.science'; con đường ---------------------------------------- Top.Science Top.science.Astronomy Top.science.astronomy.astrophysics Top.science.Astronomy.Cosmology (4 hàng)
Dưới đây là một số ví dụ về đường kèo bóng đá hom nay khớp:
lTreetest = Chọn đường kèo bóng đá hom nay từ bài kiểm tra trong đó đường kèo bóng đá hom nay ~ '*.Astronomy.*'; con đường --------------------------------------------------- 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 hàng) ltreetest = chọn đường kèo bóng đá hom nay từ thử nghiệm trong đó đường kèo bóng đá hom nay ~ '*.! hình ảnh@.*. Thiên văn học.*'; con đường ---------------------------------------- Top.science.Astronomy Top.science.astronomy.astrophysics Top.science.Astronomy.Cosmology (3 hàng)
Đây là một số ví dụ về tìm kiếm văn bản đầy đủ:
38363_38872
Xây dựng đường kèo bóng đá hom nay sử dụng các chức năng:
lTreetest = chọn Subpath (đường kèo bóng đá hom nay, 0,2) | ? Cột? -------------------------------------------------- Top.science.space.astronomy Top.science.space.astronomy.astrophysics Top.science.space.astronomy.cosmology (3 hàng)
Chúng tôi có thể đơn giản hóa điều này bằng cách tạo hàm SQL chèn nhãn tại một vị trí được chỉ định trong một đường kèo bóng đá hom nay:
Tạo hàm ins_label (kèo bóng đá hom nay, int, text) trả về kèo bóng đá hom nay Như 'Chọn Subpath ($ 1,0, $ 2) || $ 3 || Subpath ($ 1, $ 2); ' Ngôn ngữ SQL bất biến; ltreetest = chọn ins_label (đường dẫn, 2, 'không gian') từ thử nghiệm trong đó đường dẫn <@ 'top.science.astronomy'; INS_Label -------------------------------------------------- Top.science.space.astronomy Top.science.space.astronomy.astrophysics Top.science.space.astronomy.cosmology (3 hàng)
Tiện ích mở rộng bổ sung có sẵn để thực hiện các biến đổi chokèo bóng đá hom nay
Loại cho PL/Python. Các tiện ích mở rộng được gọi làltree_plpythonu
, LTREE_PLPYTHON2U
vàLTREE_PLPYTHON3U
(xemPhần 46.1Đối với quy ước đặt tên PL/Python). Nếu bạn cài đặt các biến đổi này và chỉ định chúng khi tạo hàm,kèo bóng đá hom nay
Giá trị được ánh xạ vào danh sách Python. (Tuy nhiên, điều ngược lại không được hỗ trợ.)
Được khuyến nghị mạnh mẽ rằng các tiện ích mở rộng biến đổi được cài đặt trong cùng lược đồ vớikèo bóng đá hom nay
. Nếu không
Tất cả công việc được thực hiện bởi Teodor Sigaev (<teodor@stack.net
) và Oleg Bartunov (<leg@sai.msu.su
). Nhìn thấyhttp: //www.sai.msu.su/~megera/postgres/gist/Để biết thêm thông tin. Các tác giả xin cảm ơn Eugeny Rodichev vì các cuộc thảo luận hữu ích. Nhận xét và báo cáo lỗi được hoan nghênh.