Последнее обновление
NGRAM_SEARCH
Описание
Функция NGRAM_SEARCH вычисляет сходство двух строк по N-gram. Значение сходства находится в диапазоне от 0 до 1: чем оно выше, тем больше похожи строки.
N-gram разбивает строку на множество последовательностей из N подряд идущих символов. Формула вычисления сходства: 2 * |intersection| / (|set1| + |set2|)
Поддерживаются только символы ASCII.
Синтаксис
NGRAM_SEARCH(<text>, <pattern>, <gram_num>)
Параметры
| Параметр | Описание |
|---|---|
<text> | Текстовая строка для сравнения. Тип: VARCHAR |
<pattern> | Строка-шаблон (должна быть константой). Тип: VARCHAR |
<gram_num> | Значение N для N-gram. Должно быть положительной целочисленной константой. Тип: INT. |
Возвращаемое значение
Возвращает сходство двух строк по N-gram в виде значения типа DOUBLE (от 0 до 1).
Особые случаи:
- Возвращает NULL, если
<text>или<pattern>равен NULL.<gram_num>должен быть положительной целочисленной константой и не может быть NULL - Если длина строки меньше
<gram_num>, возвращается 0 <pattern>и<gram_num>должны быть константами. В ветке Doris 4.1 начиная с версии 4.1.5 недопустимые значения<gram_num>, такие как 0, отрицательное число или нецелочисленная константа, явно вызывают ошибку- Сходство, равное 1, не обязательно означает, что строки полностью идентичны
Пример
- Базовое использование: вычисление сходства
SELECT ngram_search('123456789', '12345', 3);
+---------------------------------------+
| ngram_search('123456789', '12345', 3) |
+---------------------------------------+
| 0.6 |
+---------------------------------------+
- Пример высокого сходства
SELECT ngram_search('abababab', 'babababa', 2);
+-----------------------------------------+
| ngram_search('abababab', 'babababa', 2) |
+-----------------------------------------+
| 1 |
+-----------------------------------------+
- Если строка слишком короткая, возвращается 0
SELECT ngram_search('ab', 'abc', 3);
+----------------------------------+
| ngram_search('ab', 'abc', 3) |
+----------------------------------+
| 0 |
+----------------------------------+
- Обработка значения NULL
SELECT ngram_search(NULL, 'test', 2);
+--------------------------------+
| ngram_search(NULL, 'test', 2) |
+--------------------------------+
| NULL |
+--------------------------------+
Недопустимое значение gram_num вызывает ошибку:
SELECT NGRAM_SEARCH('abc', 'abc', 0);
ngram_search(text,pattern,gram_num): gram_num must be a positive constant.
Ключевые слова
NGRAM_SEARCH,NGRAM,SEARCH