PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Sử dụng hàm Levenshtein trên mỗi phần tử trong tsvector?

Xem xét phần mở rộng pg_trgm thay vì levenshtein() . Nó nhanh hơn theo thứ tự cường độ khi được hỗ trợ bằng chỉ mục GiST để hỗ trợ KNN trong PostgreSQL 9.1 trở lên .

Cài đặt tiện ích mở rộng một lần cho mỗi cơ sở dữ liệu:

CREATE EXTENSION pg_trgm;

Và sử dụng <-> hoặc % nhà điều hành . Một số câu trả lời liên quan đã được đăng ở đây trên SO, hãy tìm kiếm pg_tgrm [PostgreSQL] ...

Bắn hoang dã những gì bạn có thể muốn:

WITH x AS (
    SELECT unnest(string_to_array(trim(strip(
      'fat:2,4 cat:3 rat:5A'::tsvector)::text, ''''), ''' ''')) AS val
    )                                    -- provide ts_vector, extract strings
    , y AS( SELECT 'brat'::text AS term) -- provide term to match
SELECT val, term
      ,(val <-> term) AS trg_dist        -- distance operator
      ,levenshtein(val, term) AS lev_dist
FROM   x, y;

Lợi nhuận:

 val | term | trg_dist | lev_dist
-----+------+----------+----------
 cat | brat |    0.875 |        2
 fat | brat |    0.875 |        2
 rat | brat | 0.714286 |        1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres kích hoạt sau khi chèn truy cập MỚI

  2. PostgreSQL:Kiểm tra MỚI và CŨ trong một hàm để kích hoạt

  3. Sự cố đồng thời khi truy xuất Id của các hàng mới được chèn bằng ibatis

  4. Làm thế nào để hiển thị hàm, thủ tục, kích hoạt mã nguồn trong postgresql?

  5. Giữ cho PostgreSQL đôi khi chọn một kế hoạch truy vấn tồi