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

ThePG_TRGMMô -đun cung cấp tỷ lệ kèo bóng đá tối nay 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ư tỷ lệ kèo bóng đá tối nay lớp toán tử chỉ mục hỗ trợ tìm kiếm nhanh tỷ lệ kèo bóng đá tối nay chuỗi tương tự.

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

F.33.1. tỷ lệ kèo bóng đá tối nay khái niệm Trigram (hoặc Trigraph)

Trigram là tỷ lệ kèo bóng đá tối nay nhóm gồm ba ký tự liên tiếp được lấy từ tỷ lệ kèo bóng đá tối nay 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 trigram mà họ chia sẻ.

Lưu ý

PG_TRGMBỏ qua tỷ lệ kèo bóng đá tối nay ký tự không từ (không phải là Alphanumeric) khi trích xuất Trigrams 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 tỷ lệ kèo bóng đá tối nay trigram có trong chuỗi.HồiCATHồiHồiCHồi, HồiCAHồi, HồiCATHồiHồiatxông. Tập hợp tỷ lệ kèo bóng đá tối nay trigram trong chuỗifoo | BarHồif, fo, foo, OOxông, MạnhB, MạnhBA, HồiBarHồiHồiARHồi.

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

tỷ lệ kèo bóng đá tối 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ả

tỷ lệ kèo bóng đá tối nay tự(Text, Text) →Real

Trả về tỷ lệ kèo bóng đá tối nay số cho biết hai đối số tương 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 tỷ lệ kèo bóng đá tối nay (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ả tỷ lệ kèo bóng đá tối nay trigram 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ự tương đồng lớn nhất giữa tập hợp tỷ lệ kèo bóng đá tối nay trigram trong chuỗi thứ nhất và bất kỳ phạm vi liên tục nào của một bộ Trigram được đặt hàng trong chuỗi thứ hai. Để biết chi tiết, xem giải thích bên dưới.

sự tỷ lệ kèo bóng đá tối nay đồng(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ự tương đồ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 tỷ lệ kèo bóng đá tối nay từ của chuỗi thứ hai.

show_limit() →Real

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

set_limit(Real) →Real

Đặt ngưỡng tỷ lệ kèo bóng đá tối 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).; 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ộ Trigram là"W", "wo", "wor", "ord", "rd". Trong chuỗi thứ hai, bộ Trigram được đặt hàng là"t", "tw", "hai", "wo", "w", "wo", "wor", "ord", "rds". Mức độ tương tự nhất của tỷ lệ kèo bóng đá tối nay bộ Trigram được đặt hàng trong chuỗi thứ hai là"W", "wo", "wor", "ord"và sự tỷ lệ kèo bóng đá tối nay đồng là0.8.

Hàm này trả về tỷ lệ kèo bóng đá tối nay giá trị có thể được hiểu xấp xỉ là điểm tương đồ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,sự tỷ lệ kèo bóng đá tối nay đồngChọn một mức độ của tỷ lệ kèo bóng đá tối nay từ trong chuỗi thứ hai. Trong ví dụ trên,sự tỷ lệ kèo bóng đá tối nay đồngSẽ chọn phạm vi của tỷ lệ kèo bóng đá tối nay từ duy nhất'Words', có bộ Trigram là"W", "wo", "wor", "ord", "rds", "ds".


    

Do đó,sự tỷ lệ kèo bóng đá tối nay đồngHàm rất hữu ích để tìm sự tỷ lệ kèo bóng đá tối nay đồng với toàn bộ từ, trong khiword_similarityphù hợp hơn để tìm sự tương đồng cho tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay đối số của nó có độ tương tự lớn hơn ngưỡng tương tự hiện tại được đặt bởi.

Text <% TextBoolean

returntrue21035_21236pg_trgm.word_similarity_thresholdtham số.

Text % TextBoolean

<%toán tử.

Text <<% TextBoolean

returnTRUE22032_22270pg_trgm.sự tỷ lệ kèo bóng đá tối nay đồng_thresholdtham số.

Text % TextBoolean

<<%toán tử.

Text <- TextReal

Trả vềMạnhKhoảng cáchxôngGiữa tỷ lệ kèo bóng đá tối nay đối số, đó là một điểm trừtỷ lệ kèo bóng đá tối nay tự ()Giá trị.

Text <<- Text​​Real

Trả vềKhoảng cáchGiữa tỷ lệ kèo bóng đá tối nay đối số, đó là một trừ điword_similarity ()Giá trị.

Text <- TextReal

Trình làm lại<<-toán tử.

Text <<<- TextReal

Trả vềMạnhKhoảng cáchGiữa tỷ lệ kèo bóng đá tối nay đối số, đó là một trừ đisự tỷ lệ kèo bóng đá tối nay đồng ()giá trị.

Text <- TextReal

Trình làm lại<<<-Nhà điều hành.


F.33.3. Tham số GUC

(Real)

Đặt ngưỡng tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối 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.sự tỷ lệ kèo bóng đá tối nay đồng_threshold(Real)

Đặt ngưỡng tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối nay lớp toán tử chỉ mục GIST và GIN cho phép bạn tạo một chỉ mục trên cột văn bản cho mục đích tìm kiếm tương tự rất nhanh. tỷ lệ kèo bóng đá tối nay loại chỉ mục này hỗ trợ tỷ lệ kèo bóng đá tối nay toán tử tương tự được mô tả ở trên và hỗ trợ thêm tỷ lệ kèo bóng đá tối nay tìm kiếm chỉ mục dựa trên Trigram chonhư, ilike, ~, ~*=Truy vấn. tỷ lệ kèo bóng đá tối 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 bằng Gin (T Gin_TRGM_OPS);

gist_trgm_opsGIST OPCLASS xấp xỉ tỷ lệ kèo bóng đá tối nay bộ Trigram 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 tỷ lệ kèo bóng đá tối nay chỉ mục như vậy với độ dài chữ ký là 32 byte:

28616_28695

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

Chọn t, độ tỷ lệ kèo bóng đá tối nay tự (t, 'Word') như smlWord'

Điều này sẽ trả về tất cả tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối nay bộ dữ liệu rất lớn.

tỷ lệ kèo bóng đá tối nay biến thể của 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 tỷ lệ kèo bóng đá tối nay chỉ mục GIST, nhưng không phải bởi tỷ lệ kèo bóng đá tối 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ỏ tỷ lệ kèo bóng đá tối nay trận đấu gần nhất được muốn.

Ngoài ra bạn có thể sử dụng tỷ lệ kèo bóng đá tối nay chỉ mục trênTCột cho độ tỷ lệ kèo bóng đá tối nay tự từ hoặc độ tỷ lệ kèo bóng đá tối 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ả tỷ lệ kèo bóng đá tối nay giá trị trong cột văn bản có phạm vi liên tục trong bộ Trigram được đặt hàng tương ứng tương tự như 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 tỷ lệ kèo bóng đá tối nay bộ dữ liệu rất lớn.

tỷ lệ kèo bóng đá tối nay biến thể có thể của tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay chỉ mục GIST, nhưng không phải bởi tỷ lệ kèo bóng đá tối nay chỉ mục gin.

Bắt đầu trongPostgreSQL9.1, tỷ lệ kèo bóng đá tối nay loại chỉ mục này cũng hỗ trợ tìm kiếm chỉ mục chonhưilikeví 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 trigram từ chuỗi tìm kiếm và sau đó tìm kiếm chúng trong chỉ mục. Càng nhiều trigram trong chuỗi tìm kiếm, tìm kiếm chỉ mục càng hiệu quả.

Bắt đầu trongPostgreSQL9.3, tỷ lệ kèo bóng đá tối nay loại chỉ mục này cũng hỗ trợ tìm kiếm chỉ mục cho tỷ lệ kèo bóng đá tối 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 trigram từ biểu thức chính quy và sau đó tìm kiếm chúng trong chỉ mục. Càng nhiều trigram 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ỷ lệ kèo bóng đá tối nay tìm kiếm biểu hiện thông thường, hãy nhớ rằng một mẫu không có trigram 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 tỷ lệ kèo bóng đá tối nay đặc điểm hiệu suất tương đối của GIST và GIN, được thảo luận ở nơi khác.

F.33.5. Tích hợp tìm kiếm văn bản

Kết hợp Trigram là một công cụ rất hữu ích khi được sử dụng cùng với chỉ mục văn bản đầy đủ. Cụ thể, nó có thể giúp nhận ra tỷ lệ kèo bóng đá tối nay từ đầu vào sai chính tả sẽ không được khớp trực tiếp bởi cơ chế tìm kiếm văn bản đầy đủ.

Bước đầu tiên là tạo bảng phụ trợ chứa tất cả tỷ lệ kèo bóng đá tối nay từ duy nhất trong tài liệu:

Tạo từ bảng như chọn từ từ

WHERETài liệulà tỷ lệ kèo bóng đá tối nay bảng có trường văn bảnBodyTextmà chúng tôi muốn tìm kiếm. Lý do sử dụngđơn giảnCấu hình vớiTO_TSVECTOR33773_33895

Tiếp theo, tạo chỉ mục Trigram trên cột từ:

33990_34056

Bây giờ, AChọnTruy vấn tương tự như ví dụ trước có thể được sử dụng để đề xuất tỷ lệ kèo bóng đá tối nay cách viết cho tỷ lệ kèo bóng đá tối nay từ sai chính tả trong tỷ lệ kèo bóng đá tối nay thuật ngữ tìm kiếm người dùng. Một bài kiểm tra bổ sung hữu ích là yêu cầu tỷ lệ kèo bóng đá tối nay từ đã chọn cũng có độ dài tương tự như từ sai chính tả.

Lưu ý

kể từWordsBảng đã được tạo thành tỷ lệ kèo bóng đá tối nay bảng tĩnh, riêng biệt, nó sẽ cần được tái tạo định kỳ để nó vẫn được cập nhật hợp lý với bộ sưu tập tài liệu. Giữ nó chính xác hiện tại thường không cần thiết.

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 phù hợpMẫu nàyĐể báo cáo vấn đề tài liệu.