大量のデータの類似性計算は、電子商取引や検索エンジンなどの分野で重要です。 類似度計算の単純な実装は、大量のリソースを消費し、低い性能を提供します。 smlarは、PolarDB for PostgreSQL (Oracle互換) のオープンソースのサードパーティ拡張機能です。 データベース内のデータ類似度を計算できる関数と、GiSTおよびGINインデックスをサポートする類似度演算子を提供します。 smlar拡張機能は、PostgreSQLのすべての組み込みデータ型をサポートします。
前提条件
この拡張機能は、次のエンジンを実行するPolarDB for PostgreSQL (Compatible with Oracle) クラスターでサポートされています。
PolarDB for PostgreSQL (Oracle互換) 2.0 (バージョン2.0.14.1.0以降)
次のステートメントを実行して、PolarDB for PostgreSQL (Compatible with Oracle) クラスターのリビジョンバージョンを表示できます。
SHOW polar_version;
使用量
smlarエクステンションを取り付けます。
CREATE EXTENSION smlar;
説明smlarの
%
演算子は、ラム酒の演算子と競合します。 したがって、同じスキーマに2つの拡張機能を作成することはできません。次のステートメントを実行して、配列の類似度を計算します。
SELECT smlar('{3,2}'::int[], '{3,2,1}'); smlar ---------- 0.816497 (1 row) SELECT smlar('{1,4,6}'::int[], '{5,4,6}', 'N.i / (N.a + N.b)' ); smlar ---------- 0.333333 (1 row)
説明その他の関数の詳細については、「関数と演算子」をご参照ください。
smlarエクステンションを取り外します。
DROP EXTENSION smlar;
関数と演算子
関数と演算子 | 説明 |
float4 smlar(anyarray, anyarray) | 同じデータ型の2つの配列の類似度を計算します。 配列は同じデータ型を使用する必要があります。 |
float4 smlar(anyarray, anyarray, bool useIntersect) | カスタム複合タイプの2つの配列 (要素と重み) の類似度を計算します。 useIntersectパラメーターは、重複する要素のみまたはすべての要素が操作に関与するかどうかを指定します。 説明 次のステートメントを実行して複合型を定義します。
|
float4 smlar(anyarray a, anyarray b, text formula) | 同じデータ型の2つの配列間の類似度を計算します。 配列は、数式パラメータによって指定されます。 数式パラメータの定義済み変数:
|
anyarray % anyarray | 2つの配列の類似度がしきい値を超えた場合、TRUEを返します。 それ以外の場合は、FALSEを返します。 |
text[] tsvector2textarray(tsvector) | tsvector型の配列を文字列に変換します。 |
anyarray array_unique(anyarray) | 配列を並べ替え、重複排除します。 |
float4 inarray(anyarray, anyelement) | 要素が配列に存在する場合、1.0を返します。 それ以外の場合、0を返します。 |
float4 inarray(anyarray, anyelement, float4, float4) | 要素が配列に存在する場合、3番目のパラメーターを返します。 それ以外の場合は、4番目のパラメーターを返します。 |
パラメーター
パラメーター | 説明 |
smlar.threshold FLOAT | 類似度のしきい値。 パーセント記号 (%) 演算子と組み合わせた2つの配列が類似しているかどうかを判断するために使用されます。 |
smlar.persistent_cache BOOL | キャッシュされたグローバル統計をトランザクションに依存しないメモリに格納するかどうかを指定します。 |
smlar.type STRING | 類似度の計算に使用される式。 consine (デフォルト) 、tfidf、overlapの類似性タイプを使用できます。 |
smlar.stattable STRING | 収集範囲の統計を格納するテーブルの名前。 次のステートメントを実行して、テーブルを作成できます。
|
smlar.tf_method STRING | 用語頻度 (TF) を計算するために使用される方法。 デフォルト値: n。 有効な値:
|
smlar.idf_plus_one BOOL | 逆ドキュメント頻度 (IDF) を計算するために使用される方法。 デフォルト値は FALSE です。 有効な値:
|
関連ドキュメント
smlar拡張機能の詳細については、以下を参照してください。