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

PostgreSQLのみで単純なあいまい検索を作成するにはどうすればよいですか?

    Postgresは、soundexやmetaphoneなどのいくつかの文字列比較機能を備えたモジュールを提供します。ただし、レーベンシュタイン距離編集機能を使用することをお勧めします。

    Example:
    
    test=# SELECT levenshtein('GUMBO', 'GAMBOL');
     levenshtein
    -------------
               2
    (1 row)
    

    2 2つの単語間の編集距離です。これをいくつかの単語に適用し、編集距離の結果で並べ替えると、探しているあいまい一致のタイプが得られます。

    このクエリサンプルを試してください:(もちろん、独自のオブジェクト名とデータを使用して)

    SELECT * 
    FROM some_table
    WHERE levenshtein(code, 'AB123-lHdfj') <= 3
    ORDER BY levenshtein(code, 'AB123-lHdfj')
    LIMIT 10
    

    このクエリは次のように述べています:

    コード値と入力「AB123-lHdfj」の間の編集距離が3未満であるsome_tableからのすべてのデータの上位10件の結果を教えてください。コードの値が「」との差が3文字以内であるすべての行が返されます。 AB123-lHdfj'...

    注:次のようなエラーが発生した場合:

    function levenshtein(character varying, unknown) does not exist
    

    fuzzystrmatchをインストールします 使用する拡張機能:

    test=# CREATE EXTENSION fuzzystrmatch;
    


    1. ExecuteBatchメソッドは、Javaで値-2の配列を返します

    2. MySQLテーブルの列のサイズを変更するにはどうすればよいですか?

    3. 結果が1つしかないことがわかっている場合、MySQLクエリに「LIMIT1」を追加すると、クエリが高速になりますか?

    4. SQLServerでのDateTime2とDateTime