NGRAM_SEARCH
説明
textとpattern間のN-gram類似度を計算します。類似度は0から1の範囲で、値が高いほど2つの文字列間の類似度が高いことを示します。
patternとgram_numの両方は定数である必要があります。textまたはpatternの長さがgram_num未満の場合は0を返します。
N-gram類似度は、N-gramに基づいてテキストの類似度を計算する手法です。N-gramは、テキスト文字列から抽出された連続するN個の文字または単語の集合です。例えば、文字列"text"でN=2(bigram)の場合、bigramは次のようになります:{"te", "ex", "xt"}。
N-gram類似度は以下のように計算されます:
2 * |Intersection| / (|text set| + |pattern set|)
ここで、|text set|と|pattern set|はtextとpatternのN-gramであり、Intersectionは2つの集合の積集合です。
定義上、類似度が1であっても、必ずしも2つの文字列が同一であることを意味するわけではないことに注意してください。
ASCII エンコーディングのみサポートしています。
構文
DOUBLE ngram_search(VARCHAR text,VARCHAR pattern,INT gram_num)
例
mysql> select ngram_search('123456789' , '12345' , 3);
+---------------------------------------+
| ngram_search('123456789', '12345', 3) |
+---------------------------------------+
| 0.6 |
+---------------------------------------+
mysql> select ngram_search("abababab","babababa",2);
+-----------------------------------------+
| ngram_search('abababab', 'babababa', 2) |
+-----------------------------------------+
| 1 |
+-----------------------------------------+
keywords
NGRAM_SEARCH,NGRAM,SEARCH