ThePG_TRGM
Mô -đun cung cấp cách đọc kèo bóng đá 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ách đọc kèo bóng đá lớp toán tử chỉ mục hỗ trợ tìm kiếm nhanh cách đọc kèo bóng đá chuỗi tương tự.
Trigram là cách đọc kèo bóng đá nhóm gồm ba ký tự liên tiếp được lấy từ cách đọc kèo bóng đá 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ẻ.
PG_TRGM
Bỏ qua cách đọc kèo bóng đá 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 cách đọc kèo bóng đá trigram có trong chuỗi.CAT
HồilàMạnhC
Hồi, HồiCA
Hồi, CAT
xôngvàat
Hồi. Tập hợp cách đọc kèo bóng đá trigram trong chuỗifoo | Bar
HồilàHồif
xông, fo
, foo
Hồi, HồiOO
, B
xông, HồiBA
Hàng, HồiBar
vàHồiAR
Hồi.
cách đọc kèo bóng đá chức năng được cung cấp bởiPG_TRGM
Mô -đun được hiển thị trongBảng F.24, toán tử trongBảng F.25.
Bảng F.24.PG_TRGM
Chức năng
xem xét ví dụ sau:
# Chọn Word_Similarity ('Word', 'Hai từ');
Trong chuỗi đầu tiên, tập hợp cách đọc kèo bóng đá 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 cách đọc kèo bóng đá bộ Trigram được đặt hàng trong chuỗi thứ hai là"w", "wo", "wor", "ord"
và sự cách đọc kèo bóng đá đồng là0.8
.
Hàm này trả về cách đọc kèo bóng đá 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ự cách đọc kèo bóng đá đồng (văn bản, văn bản)
Chọn một mức độ của cách đọc kèo bóng đá từ trong chuỗi thứ hai. Trong ví dụ trên,sự cách đọc kèo bóng đá đồng (văn bản, văn bản)
Sẽ chọn phạm vi của cách đọc kèo bóng đá từ duy nhất'Words'
, có bộ Trigram là"W", "wo", "wor", "ord", "rds", "ds"
.
# Chọn Strict_word_Similarity ('Word', 'Hai từ'), cách đọc kèo bóng đá tự ('Word', 'Words');
Do đó,sự cách đọc kèo bóng đá đồng (văn bản, văn bản)
Hàm rất hữu ích để tìm sự cách đọc kèo bóng đá đồng với toàn bộ từ, trong khiword_similarity (văn bản, văn bản)
phù hợp hơn để tìm sự tương đồng cho cách đọc kèo bóng đá phần của từ.
Bảng F.25.PG_TRGM
Người vận hành
Nhà điều hành | return | Mô tả |
---|---|---|
Text % Text |
Boolean |
Trả vềĐúng Nếu cách đọc kèo bóng đá đối số của nó có sự tương đồng lớn hơn ngưỡng tương tự hiện tại được đặt bởipg_trgm.similarity_threshold . |
Text <% Text |
Boolean |
Trả vềĐúng Nếu sự tương đồng giữa Trigram được đặt trong đối số đầu tiên và mức độ liên tục của cách đọc kèo bóng đá Trigram được đặt hàng trong đối số thứ hai lớn hơn ngưỡng tương tự từ hiện tại được đặt bởipg_trgm.word_similarity_threshold tham số. |
Text % Text |
Boolean |
<% toán tử. |
Text <<% Text |
Boolean |
returnTRUE 21001_21239pg_trgm.sự cách đọc kèo bóng đá đồng_threshold tham số. |
Text % Text |
Boolean |
Cổ lưu của<<% toán tử. |
Text <- Text |
Real |
Trả vềHồiKhoảng cách đọc kèo bóng đáHàngGiữa cách đọc kèo bóng đá đối số, đó là một trừ đicách đọc kèo bóng đá tự () Giá trị. |
Text <<- Text |
Real |
Trả vềHồiKhoảng cách đọc kèo bóng đáGiữa cách đọc kèo bóng đá đối số, đó là một trừ điword_similarity () Giá trị. |
Text <- Text |
Real |
<<- toán tử. |
Text <<<- Text |
Real |
Trả vềHồiKhoảng cách đọc kèo bóng đáGiữa cách đọc kèo bóng đá đối số, đó là một trừ đisự cách đọc kèo bóng đá đồng () giá trị. |
Text <- Text |
Real |
Trình làm lại<<<- toán tử. |
pg_trgm.similarity_threshold
(Real
)Đặt ngưỡng cách đọc kèo bóng đá 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 cách đọc kèo bóng đá tự từ hiện tại được sử dụng bởi<%
và%
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ự cách đọc kèo bóng đá đồng_threshold
(Real
)Đặt ngưỡng cách đọc kèo bóng đá tự từ nghiêm ngặt hiện tại được sử dụng bởi<<%
và%
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).
ThePG_TRGM
Mô -đun cung cấp cách đọc kèo bóng đá 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 một cột văn bản cho mục đích tìm kiếm tương tự rất nhanh. cách đọc kèo bóng đá loại chỉ mục này hỗ trợ cách đọc kèo bóng đá toán tử tương tự được mô tả ở trên và hỗ trợ thêm cách đọc kèo bóng đá tìm kiếm chỉ mục dựa trên Trigram chonhư
, ilike
, ~
và~*
Truy vấn. .
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);
Tại thời điểm này, bạn sẽ có cách đọc kèo bóng đá chỉ mục trênT
Cột mà bạn có thể sử dụng để tìm kiếm tương tự. cách đọc kèo bóng đá truy vấn điển hình là
Chọn t, độ cách đọc kèo bóng đá tự (t, 'Word
') như smlWord
'
Điều này sẽ trả về tất cả cách đọc kèo bóng đá 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 cách đọc kèo bóng đá bộ dữ liệu rất lớn.
cách đọc kèo bóng đá 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 cách đọc kèo bóng đá chỉ mục GIST, nhưng không phải bởi cách đọc kèo bóng đá 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ỏ cách đọc kèo bóng đá trận đấu gần nhất được muốn.
Ngoài ra bạn có thể sử dụng cách đọc kèo bóng đá chỉ mục trênT
Cột cho độ cách đọc kèo bóng đá tự từ hoặc độ cách đọc kèo bóng đá tự từ nghiêm ngặt. Truy vấn điển hình là:
Chọn t, word_similarity ('Word
', t) như SMLWord
' <% t
và
Chọn T, Strict_word_Similarity ('Word
', t) như SMLWord
' <<% t
Điều này sẽ trả về tất cả cách đọc kèo bóng đá 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 đủ 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 cách đọc kèo bóng đá bộ dữ liệu rất lớn.
cách đọc kèo bóng đá biến thể có thể của cách đọc kèo bóng đá truy vấn trên là:
Chọn T, 'Word
' <<- T như Dist
và
Chọn T, 'Word
' <<<- t như Dist
Điều này có thể được triển khai khá hiệu quả bởi cách đọc kèo bóng đá chỉ mục GIST, nhưng không phải bởi cách đọc kèo bóng đá chỉ mục gin.
Bắt đầu trongPostgreSQL9.1, cách đọc kèo bóng đá loại chỉ mục này cũng hỗ trợ tìm kiếm chỉ mục chonhư
và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 đọc kèo bóng đá 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, cách đọc kèo bóng đá loại chỉ mục này cũng hỗ trợ tìm kiếm chỉ mục cho cách đọc kèo bóng đá trận đấu biểu hiện thông thường (~
và~*
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 đọc kèo bóng đá 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ìm kiếm biểu hiện thông thường, hãy nhớ rằng cách đọc kèo bóng đá 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ố.
30433_30575
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 cách đọc kèo bóng đá 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ả cách đọc kèo bóng đá từ duy nhất trong tài liệu:
Tạo cách đọc kèo bóng đá từ bảng như chọn từ từ
WHERETài liệu
là cách đọc kèo bóng đá bảng có trường văn bảnBodyText
mà chúng tôi muốn tìm kiếm. Lý do sử dụngđơn giản
Cấu hình vớito_tsVector
Hàm, thay vì sử dụng cấu hình dành riêng cho ngôn ngữ, là chúng tôi muốn có một danh sách cách đọc kèo bóng đá từ gốc (unstemmed).
Tiếp theo, tạo chỉ mục Trigram trên cột từ:
31783_31849
Bây giờ, AChọn
Truy vấn tương tự như ví dụ trước có thể được sử dụng để đề xuất cách đọc kèo bóng đá cách viết cho cách đọc kèo bóng đá từ sai chính tả trong cách đọc kèo bóng đá 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 cách đọc kèo bóng đá từ đã chọn cũng có độ dài tương tự như từ sai chính tả.
kể từWords
Bảng đã được tạo thành cách đọc kèo bóng đá 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.
Trang web phát triển Gisthttp: //www.sai.msu.su/~megera/postgres/gist/
Trang web phát triển Tsearch2http: //www.sai.msu.su/~megera/postgres/gist/tsearch/v2/
Oleg Bartunov<leg@sai.msu.su
, Moscow, Đại học Moscow, Nga
Teodor Sigaev<teodor@sigaev.ru
, Moscow, Delta-Soft Ltd., Nga
Alexander Korotkov<a.korotkov@postgrespro.ru
, 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.