sql >> データベース >  >> RDS >> PostgreSQL

tsvectorの各要素でレーベンシュタイン関数を使用しますか?

    拡張子pg_trgmを検討してください levenshtein()の代わりに 。 PostgreSQL9.1以降のKNN機能

    データベースごとに1回拡張機能をインストールします:

    CREATE EXTENSION pg_trgm;
    

    そして、 <->を使用します または% オペレーター 。いくつかの関連する回答がSOに投稿されています。 pg_tgrm[PostgreSQL]<を検索してください。 / a> ...

    あなたが望むかもしれないものでワイルドショット:

    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;
    

    返品:

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



    1. SQLエラー:ORA-00907:右括弧がありません。

    2. Mysql-複数の結合されたテーブルのカウントの合計

    3. SET CHARACTER SET utf8は必要ですか?

    4. SQL SELECT MIN