メインコンテンツまでスキップ
バージョン: 26.x

NGRAM_SEARCH

説明

NGRAM_SEARCH関数は、2つの文字列間のN-gram類似度を計算します。類似度は0から1の範囲で、値が高いほど文字列がより類似していることを示します。

N-gramは文字列を連続するN文字のセットに分解します。類似度の計算式は次の通りです:2 * |intersection| / (|set1| + |set2|)

ASCII文字のみがサポートされています。

構文

NGRAM_SEARCH(<text>, <pattern>, <gram_num>)

パラメータ

Parameterデスクリプション
<text>比較するテキスト文字列。型:VARCHAR
<pattern>パターン文字列(定数である必要があります)。型:VARCHAR
<gram_num>N-gramのN値(定数である必要があります)。型:INT

Return Value

DOUBLE型を返します。2つの文字列間のN-gram類似度(0から1の間)。

特殊なケース:

  • いずれかのパラメータがNULLの場合、NULLを返します
  • 文字列の長さが<gram_num>未満の場合、0を返します
  • <pattern><gram_num>は定数である必要があります
  • 類似度が1であっても、文字列が完全に同一であることを必ずしも意味しません

Examples

  1. 基本的な使用法:類似度を計算
SELECT ngram_search('123456789', '12345', 3);
+---------------------------------------+
| ngram_search('123456789', '12345', 3) |
+---------------------------------------+
| 0.6 |
+---------------------------------------+
  1. 高類似度の例
SELECT ngram_search('abababab', 'babababa', 2);
+-----------------------------------------+
| ngram_search('abababab', 'babababa', 2) |
+-----------------------------------------+
| 1 |
+-----------------------------------------+
  1. 文字列が短すぎる場合は0を返す
SELECT ngram_search('ab', 'abc', 3);
+----------------------------------+
| ngram_search('ab', 'abc', 3) |
+----------------------------------+
| 0 |
+----------------------------------+
  1. NULL値の処理
SELECT ngram_search(NULL, 'test', 2);
+--------------------------------+
| ngram_search(NULL, 'test', 2) |
+--------------------------------+
| NULL |
+--------------------------------+

Keywords

NGRAM_SEARCH,NGRAM,SEARCH