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
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

F.16. FuzzyStrMatch - Xác định sự tương đồng kèo bóng đá euro và khoảng cách#

ThefuzzystrmatchMô -đun cung cấp một số chức năng để xác định điểm tương đồng và khoảng cách giữa các kèo bóng đá euro.

THẬN TRỌNG

Hiện tại,SoundEx, Metaphone, Dmetaphonedmetaphone_altCác chức năng không hoạt động tốt với mã hóa Multibyte (như UTF-8). Sử dụngDaitch_mokotoffhoặcLevenshteinVới dữ liệu đó.

Mô -đun này được coi làTrustedHàng, 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.16.1. SoundEx#

Hệ thống SoundEx là một phương pháp phù hợp với tên âm thanh tương tự bằng kèo bóng đá euro chuyển đổi chúng thành cùng một mã. Nó ban đầu được sử dụng bởi Điều tra dân số Hoa Kỳ vào năm 1880, 1900 và 1910. Lưu ý rằng SoundEx không hữu ích lắm cho các tên không phải tiếng Anh.

TheFuzzyStrmatchMô -đun cung cấp hai chức năng để làm việc với mã soundex:

SoundEx (văn bản) Trả về văn bản

TheSoundExHàm chuyển đổi một kèo bóng đá euro thành mã SoundEx của nó. Thekhác biệtHàm chuyển đổi hai kèo bóng đá euro thành mã soundex của chúng và sau đó báo cáo số lượng vị trí mã phù hợp. Vì mã SoundEx có bốn ký tự, kết quả dao động từ 0 đến bốn, không có khớp và bốn ký tự là một trận đấu chính xác.kèo bóng đá euro tựsẽ là một cái tên tốt hơn.)

Đây là một số ví dụ sử dụng:

Chọn SoundEx ('Hello World!');

F.16.2. Daitch-Mokotoff SoundEx#

Giống như hệ thống SoundEx gốc, Daitch-Mokotoff SoundEx khớp với các tên âm thanh tương tự bằng kèo bóng đá euro chuyển đổi chúng thành cùng một mã. Tuy nhiên, Daitch-Mokotoff SoundEx hữu ích hơn đáng kể cho các tên không phải tiếng Anh so với hệ thống gốc.

  • Mã dựa trên sáu chữ cái có ý nghĩa đầu tiên chứ không phải bốn.

  • Một chữ cái hoặc kết hợp bản đồ chữ cái thành mười mã có thể thay vì bảy.

  • Trong đó hai chữ cái liên tiếp có một âm thanh duy nhất, chúng được mã hóa dưới dạng một số duy nhất.

  • Khi một chữ cái hoặc kết hợp các chữ cái có thể có âm thanh khác nhau, nhiều mã được phát ra để bao gồm tất cả các khả năng.

Hàm này tạo mã Daitch-Mokotoff SoundEx cho đầu kèo bóng đá euroo của nó:

Daitch_mokotoff (Nguồnvăn bản) trả về văn bản []

Kết quả có thể chứa một hoặc nhiều mã tùy thuộc kèo bóng đá euroo số lượng phát âm hợp lý, vì vậy nó được biểu diễn dưới dạng một mảng.

Vì mã âm thanh Daitch-Mokotoff chỉ bao gồm 6 chữ số,Nguồntốt nhất là một từ hoặc tên.

Đây là một số ví dụ:

Chọn Daitch_Mokotoff ('George');

Để khớp các tên đơn, các mảng văn bản được trả về có thể được khớp trực tiếp bằng kèo bóng đá euro sử dụng&&Toán tử: Bất kỳ sự chồng chéo nào cũng có thể được coi là một trận đấu. Chỉ số gin có thể được sử dụng để hiệu quả, xemPhần 65.4Và ví dụ này:

Tạo bảng S (văn bản nm);

Để lập chỉ mục và khớp với bất kỳ số lượng tên nào theo bất kỳ thứ tự nào, có thể sử dụng các tính năng tìm kiếm văn bản đầy đủ. Nhìn thấyChương 12Và ví dụ này:

Tạo hàm soundex_tsvector (văn bản V_NAME) Trả về

Nếu mong muốn tránh tính toán lại mã soundex trong khi kiểm tra lại chỉ mục, có thể sử dụng một chỉ mục trên một cột riêng biệt thay vì chỉ mục trên biểu thức. Một cột được tạo được lưu trữ có thể được sử dụng cho việc này;Phần 5.4.

F.16.3. Levenshtein#

Hàm này tính toán khoảng cách Levenshtein giữa hai kèo bóng đá euro:

levenshtein (văn bản nguồn, văn bản đích, ins_cost int, del_cost int, sub_cost int) trả về int int

cảNguồnTargetcó thể là bất kỳ kèo bóng đá euro không null nào, với tối đa 255 ký tự. Các tham số chi phí xác định mức độ tính phí cho việc chèn, xóa hoặc thay thế của ký tự tương ứng.

Levenshtein_less_equallà phiên bản tăng tốc của hàm Levenshtein để sử dụng khi chỉ có khoảng kèo bóng đá euro nhỏ được quan tâm. Nếu khoảng kèo bóng đá euro thực tế nhỏ hơn hoặc bằngMAX_D, sau đóLevenshtein_less_equalTrả về khoảng kèo bóng đá euro chính xác; nếu không thì nó trả về một số giá trị lớn hơnMAX_D. Nếu nhưMAX_Dlà tiêu cực thì hành vi này giống nhưLevenshtein.

ví dụ:

test =# chọn levenshtein ('gumbo', 'gambol');

F.16.4. Metaphone#

metaphone, giống như SoundEx, dựa trên ý tưởng xây dựng mã đại diện cho một kèo bóng đá euro đầu vào. Hai kèo bóng đá euro sau đó được coi là tương tự nếu chúng có cùng mã.

Hàm này tính toán mã metaphone của kèo bóng đá euro đầu vào:

metaphone (văn bản nguồn, max_output_length int) trả về văn bản

Nguồnphải là một kèo bóng đá euro không null với tối đa 255 ký tự.MAX_OUTPUT_LEPTĐặt chiều dài tối đa của mã metaphone đầu ra; Nếu lâu hơn, đầu ra bị cắt theo chiều dài này.

Ví dụ:

test =# Chọn Metaphone ('Gumbo', 4);

F.16.5. Metaphone kép#

Hệ thống siêu hình đôi tính toán haiVangÂm thanh nhưkèo bóng đá euro cho một kèo bóng đá euro đầu vào đã cho - AHồiTiểu họcvà mộtMạnhxen kẽHồi. Trong hầu hết các trường hợp, chúng giống nhau, nhưng đối với các tên không phải tiếng Anh, đặc biệt là chúng có thể hơi khác nhau, tùy thuộc vào kèo bóng đá euro phát âm.

Dmetaphone (văn bản nguồn) Trả về văn bản

Không có giới hạn độ dài trên các kèo bóng đá euro đầu vào.

Ví dụ:

test =# chọn dmetaphone ('gumbo');