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