PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Menggunakan fungsi Levenshtein pada setiap elemen dalam tsvector?

Pertimbangkan ekstensi pg_trgm bukannya levenshtein() . Ini lebih cepat dengan urutan besarnya ketika didukung dengan indeks GiST untuk mendukung Fitur KNN di PostgreSQL 9.1 atau yang lebih baru .

Instal ekstensi satu kali per database:

CREATE EXTENSION pg_trgm;

Dan gunakan <-> atau % operator . Beberapa jawaban terkait telah diposting di sini di SO, cari pg_tgrm [PostgreSQL] ...

Tembakan liar pada apa yang Anda inginkan:

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;

Pengembalian:

 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. bagaimana cara mengembalikan tabel temp dari fungsi postgres?

  2. Rencana Toko Kolom

  3. Bagaimana Anda memilih rentang tanggal di postgres?

  4. Tampilkan pesan terbaru dari tabel pesan, kelompokkan berdasarkan pengguna

  5. instalasi instace tunggal postgresql