Phiên bản được hỗ trợ:hiện tại(17)16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3

F.33. PG_TRGM - Hỗ trợ cho sự kèo chấp bóng đá hôm nay đồng của văn bản bằng cách sử dụng Trigram khớp#

ThePG_TRGMMô -đun cung cấp các chức năng và toán tử để xác định sự giống nhau của văn bản chữ và số dựa trên kết hợp Trigram, cũng như các lớp toán tử chỉ mục hỗ trợ tìm kiếm nhanh các chuỗi kèo chấp bóng đá hôm nay tự.

Mô -đun này được coi làHồiTrustedHồi, nghĩa là, nó có thể được cài đặt bởi những người không giám sát cóTạoĐặc quyền trên cơ sở dữ liệu hiện tại.

F.33.1. Các khái niệm kèo chấp bóng đá hôm nay (hoặc Trigraph)#

kèo chấp bóng đá hôm nay là một nhóm gồm ba ký tự liên tiếp được lấy từ một chuỗi. Chúng ta có thể đo lường sự giống nhau của hai chuỗi bằng cách đếm số lượng kèo chấp bóng đá hôm nay mà họ chia sẻ.

Lưu ý

PG_TRGMBỏ qua các ký tự không từ (không phải là Alphanumeric) khi trích xuất kèo chấp bóng đá hôm nay từ một chuỗi. Mỗi từ được coi là có hai khoảng trắng có tiền tố và một không gian được hậu tố khi xác định tập hợp các kèo chấp bóng đá hôm nay có trong chuỗi.HồiCATHồiMạnhC, CA, CATHồiat. Tập hợp các kèo chấp bóng đá hôm nay trong chuỗifoo | BarfHàng, foHồi, foo, HồiOOHồi, BHồi, BA, BarARKhăn.

F.33.2. Chức năng và toán tử#

kèo chấp bóng đá hôm nay chức năng được cung cấp bởiPG_TRGMMô -đun được hiển thị trongBảng F.25, toán tử trongBảng F.26.

Bảng F.25.PG_TRGMchức năng

function

Mô tả

kèo chấp bóng đá hôm nay tự(Text, Text) →Real

Trả về một số cho biết hai đối số kèo chấp bóng đá hôm nay tự như thế nào. Phạm vi của kết quả bằng không (chỉ ra rằng hai chuỗi hoàn toàn không giống nhau) với một (chỉ ra rằng hai chuỗi là giống hệt nhau).

show_trgm(Text) →Text []

Trả về một mảng của tất cả các kèo chấp bóng đá hôm nay trong chuỗi đã cho. (Trong thực tế, điều này hiếm khi hữu ích ngoại trừ gỡ lỗi.)

word_similarity(Text, Text) →Real

Trả về một số biểu thị sự kèo chấp bóng đá hôm nay đồng lớn nhất giữa tập hợp các trigram trong chuỗi thứ nhất và bất kỳ mức độ liên tục nào của một bộ ba con được đặt hàng trong chuỗi thứ hai. Để biết chi tiết, xem giải thích bên dưới.

strict_word_similarity(Text, Text) →Real

giống nhưword_similarity, nhưng lực lượng phạm vi ranh giới để phù hợp với ranh giới từ. Vì chúng ta không có trigram từ chéo, chức năng này thực sự trả về sự kèo chấp bóng đá hôm nay đồng lớn nhất giữa chuỗi thứ nhất và bất kỳ phạm vi liên tục nào của các từ của chuỗi thứ hai.

show_limit() →Real

Trả về ngưỡng kèo chấp bóng đá hôm nay tự hiện tại được sử dụng bởi%toán tử. Điều này đặt ra sự kèo chấp bóng đá hôm nay đồng tối thiểu giữa hai từ để chúng được coi là đủ kèo chấp bóng đá hôm nay tự để viết sai chính tả của nhau.; Thay vào đó sử dụngshow .)

set_limit(Real) →Real

Đặt ngưỡng kèo chấp bóng đá hôm nay tự hiện tại được sử dụng bởi%Nhà điều hành. Ngưỡng phải nằm trong khoảng từ 0 đến 1 (mặc định là 0,3).; Thay vào đó sử dụngset pg_trgm.similarity_threshold.)


Xem xét ví dụ sau:

# Chọn Word_Similarity ('Word', 'Hai từ');

Trong chuỗi đầu tiên, bộ kèo chấp bóng đá hôm nay là"w", "wo", "wor", "ord", "rd". Trong chuỗi thứ hai, bộ kèo chấp bóng đá hôm nay được đặt hàng là"t", "tw", "hai", "wo", "w", "wo", "wor", "ord", "rds". Mức độ kèo chấp bóng đá hôm nay tự nhất của một bộ Trigram được đặt hàng trong chuỗi thứ hai là"W", "wo", "wor", "ord"và sự kèo chấp bóng đá hôm nay đồng là0.8.

Hàm này trả về một giá trị có thể được hiểu xấp xỉ là sự kèo chấp bóng đá hôm nay đồng lớn nhất giữa chuỗi thứ nhất và bất kỳ chuỗi con nào của chuỗi thứ hai. Tuy nhiên, chức năng này không thêm phần đệm vào ranh giới của phạm vi.

Đồng thời,strict_word_similarityChọn một mức độ kèo chấp bóng đá hôm nay các từ trong chuỗi thứ hai. Trong ví dụ trên,strict_word_similaritySẽ chọn phạm vi kèo chấp bóng đá hôm nay một từ duy nhất'Words', có bộ kèo chấp bóng đá hôm nay là"W", "wo", "wor", "ord", "rds", "ds".


    

Do đó,strict_word_similarityHàm rất hữu ích để tìm sự kèo chấp bóng đá hôm nay đồng với toàn bộ từ, trong khiword_similarityphù hợp hơn để tìm sự kèo chấp bóng đá hôm nay đồng cho các phần của từ.

Bảng F.26.PG_TRGMNgười vận hành

Nhà điều hành

Mô tả

Text % TextBoolean

returnTRUENếu các đối số của nó có độ kèo chấp bóng đá hôm nay tự lớn hơn ngưỡng kèo chấp bóng đá hôm nay tự hiện tại được đặt bởipg_trgm.similarity_threshold.

Text <% TextBoolean

returnTRUE22508_22709pg_trgm.word_similarity_thresholdtham số.

Text % TextBoolean

<%toán tử.

Text <<% TextBoolean

returnTRUE23505_23743PG_TRGM.strict_word_similarity_thresholdtham số.

Text % TextBoolean

Cổ lưu kèo chấp bóng đá hôm nay<<%Nhà điều hành.

Text <- TextReal

Trả vềMạnhKhoảng cáchGiữa kèo chấp bóng đá hôm nay đối số, đó là một trừ đikèo chấp bóng đá hôm nay tự ()Giá trị.

Text <<- TextReal

Trả vềKhoảng cáchGiữa kèo chấp bóng đá hôm nay đối số, đó là một trừword_similarity ()giá trị.

Text <- TextReal

<<-toán tử.

Text <<<- TextReal

Trả vềKhoảng cáchHồiGiữa kèo chấp bóng đá hôm nay đối số, đó là một trừ đistrict_word_similarity ()Giá trị.

Text <- TextReal

<<<-toán tử.


F.33.3. Tham số GUC#

(Real) #

Đặt ngưỡng kèo chấp bóng đá hôm nay tự hiện tại được sử dụng bởi%toán tử. Ngưỡng phải nằm trong khoảng từ 0 đến 1 (mặc định là 0,3).

pg_trgm.word_similarity_threshold(Real) #

Đặt ngưỡng kèo chấp bóng đá hôm nay tự từ hiện tại được sử dụng bởi<%%Người vận hành. Ngưỡng phải nằm trong khoảng từ 0 đến 1 (mặc định là 0,6).

PG_TRGM.strict_word_similarity_thrhold(Real) #

Đặt ngưỡng kèo chấp bóng đá hôm nay tự từ nghiêm ngặt hiện tại được sử dụng bởi<<%%Người vận hành. Ngưỡng phải nằm trong khoảng từ 0 đến 1 (mặc định là 0,5).

F.33.4. Hỗ trợ chỉ mục#

ThePG_TRGMMô -đun cung cấp các lớp toán tử chỉ mục chính và gin cho phép bạn tạo một chỉ mục trên một cột văn bản cho mục đích tìm kiếm kèo chấp bóng đá hôm nay tự rất nhanh. Các loại chỉ mục này hỗ trợ các toán tử kèo chấp bóng đá hôm nay tự được mô tả ở trên và hỗ trợ thêm các tìm kiếm chỉ mục dựa trên Trigram chonhư, ilike, ~, ~*=Truy vấn. Các so sánh kèo chấp bóng đá hôm nay tự là không nhạy cảm trường hợp trong bản dựng mặc định làPG_TRGM. kèo chấp bóng đá hôm nay nhà khai thác bất bình đẳng không được hỗ trợ.

Ví dụ:

Tạo bảng test_trgm (t văn bản);

hoặc

Tạo chỉ mục TRGM_IDX trên test_trgm

GIST_TRGM_OPSGIST OPCLASS xấp xỉ một bộ kèo chấp bóng đá hôm nay dưới dạng chữ ký bitmap. Tham số số nguyên tùy chọn của nóSiglenXác định độ dài chữ ký trong byte. Độ dài mặc định là 12 byte.

Ví dụ về việc tạo một chỉ mục như vậy với độ dài chữ ký là 32 byte:

30494_30573

Tại thời điểm này, bạn sẽ có một chỉ mục trênTCột mà bạn có thể sử dụng để tìm kiếm kèo chấp bóng đá hôm nay tự. Một truy vấn điển hình là

Chọn t, độ kèo chấp bóng đá hôm nay tự (t, 'Word') như smlWord'

Điều này sẽ trả về tất cả kèo chấp bóng đá hôm nay giá trị trong cột văn bản đủ giống vớiWord, được sắp xếp từ trận đấu tốt nhất đến tồi tệ nhất. Chỉ mục sẽ được sử dụng để biến điều này thành một hoạt động nhanh ngay cả trên kèo chấp bóng đá hôm nay bộ dữ liệu rất lớn.

Một biến thể kèo chấp bóng đá hôm nay truy vấn trên là

Chọn T, T <- 'Word' Như Dist

Điều này có thể được triển khai khá hiệu quả bởi kèo chấp bóng đá hôm nay chỉ mục GIST, nhưng không phải bởi kèo chấp bóng đá hôm nay chỉ mục GIN. Nó thường sẽ đánh bại công thức đầu tiên khi chỉ có một số lượng nhỏ kèo chấp bóng đá hôm nay trận đấu gần nhất được muốn.

Ngoài ra bạn có thể sử dụng một chỉ mục trênTCột cho độ kèo chấp bóng đá hôm nay tự từ hoặc độ kèo chấp bóng đá hôm nay tự từ nghiêm ngặt. Truy vấn điển hình là:

Chọn T, Word_Similarity ('Word', t) như SMLWord' <% t

Chọn T, Strict_word_Similarity ('Word', t) như SMLWord' <<% t

Điều này sẽ trả về tất cả các giá trị trong cột văn bản có phạm vi liên tục trong bộ Trigram được đặt hàng kèo chấp bóng đá hôm nay ứng đủ giống với bộ Trigram củaWord, được sắp xếp từ trận đấu tốt nhất đến tồi tệ nhất. Chỉ mục sẽ được sử dụng để biến điều này thành một hoạt động nhanh ngay cả trên kèo chấp bóng đá hôm nay bộ dữ liệu rất lớn.

Các biến thể có thể kèo chấp bóng đá hôm nay các truy vấn trên là:

Chọn T, 'Word' <<- T như Dist

Chọn T, 'Word' <<<- t như Dist

Điều này có thể được triển khai khá hiệu quả bởi kèo chấp bóng đá hôm nay chỉ mục GIST, nhưng không phải bởi kèo chấp bóng đá hôm nay chỉ mục gin.

Bắt đầu trongPOSTGRESQL9.1, kèo chấp bóng đá hôm nay loại chỉ mục này cũng hỗ trợ tìm kiếm chỉ mục chonhưilike, ví dụ

Chọn * từ test_trgm trong đó t thích '%foo%bar';

Tìm kiếm chỉ mục hoạt động bằng cách trích xuất kèo chấp bóng đá hôm nay từ chuỗi tìm kiếm và sau đó tìm kiếm chúng trong chỉ mục. Càng nhiều kèo chấp bóng đá hôm nay trong chuỗi tìm kiếm, tìm kiếm chỉ mục càng hiệu quả.

Bắt đầu trongPOSTGRESQL9.3, kèo chấp bóng đá hôm nay loại chỉ mục này cũng hỗ trợ tìm kiếm chỉ mục cho kèo chấp bóng đá hôm nay kết quả biểu hiện thông thường (~~*Người vận hành), ví dụ

Chọn * từ test_trgm trong đó t ~ '(foo | bar)';

Tìm kiếm chỉ mục hoạt động bằng cách trích xuất kèo chấp bóng đá hôm nay từ biểu thức chính quy và sau đó tìm kiếm chúng trong chỉ mục. Càng nhiều kèo chấp bóng đá hôm nay có thể được trích xuất từ ​​biểu thức chính quy, tìm kiếm chỉ mục càng hiệu quả.

cho cả hainhưVà tìm kiếm biểu hiện thông thường, hãy nhớ rằng một mẫu không có kèo chấp bóng đá hôm nay có thể trích xuất sẽ thoái hóa thành quét toàn bộ chỉ số.

Sự lựa chọn giữa lập chỉ mục GIST và GIIN phụ thuộc vào các đặc điểm hiệu suất kèo chấp bóng đá hôm nay đối của GIST và GIN, được thảo luận ở nơi khác.

F.33.6. Tài liệu tham khảo#

Trang web phát triển chínhhttp: //www.sai.msu.su/~megera/postgres/gist/

Trang web phát triển Tsearch2http: //www.sai.msu.su/~megera/postgres/gist/tsearch/v2/

F.33.7. Tác giả#

Oleg Bartunov, Moscow, Đại học Moscow, Nga

Teodor Sigaev, Moscow, Delta-Soft Ltd., Nga

Alexander Korotkov, Moscow, Postgres Professional, Nga

Tài liệu: Christopher Kings-Lynne

Mô-đun này được tài trợ bởi Delta-Soft Ltd., Moscow, Nga.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớpMẫu nàyĐể báo cáo vấn đề tài liệu.