Перейти к основному содержимому

ngram_search

Описание

Вычисляет ngram-сходство двух строк.

к сведению
  • В настоящее время кодировка символов поддерживает только ASCII и не поддерживает UTF-8.
  • Функция ngram_search чувствительна к регистру. Другая функция ngram_search_case_insensitive не чувствительна к регистру. В остальном эти две функции идентичны.

Синтаксис

DOUBLE ngram_search(VARCHAR haystack, VARCHAR needle, INT gram_num)

Параметры

  • haystack: обязательный, первая строка для сравнения. Должна быть значением VARCHAR. Может быть именем столбца или константным значением. Если haystack является именем столбца и для этого столбца в таблице создан N-Gram bloom filter индекс, индекс может ускорить вычисления функции ngram_search.

  • needle: обязательный, вторая строка для сравнения. Должна быть значением VARCHAR. Может быть только константным значением.

    подсказка
    • Длина значения needle не может превышать 2^15. В противном случае будет выброшена ошибка.
    • Если длина значения haystack больше 2^15, функция вернет 0.
    • Если длина значения haystack или needle меньше gram_num, функция вернет 0.
  • gram_num: обязательный, используется для указания количества грамм. Рекомендуемое значение — 4.

Возвращаемое значение

Возвращает значение, описывающее степень сходства двух строк. Диапазон возвращаемого значения — от 0 до 1. Чем больше это значение, тем более похожи строки.

Примеры

-- Значения haystack и needle являются константными значениями.
mysql> select ngram_search('English', 'England',4);
+---------------------------------------+
| ngram_search('English', 'England', 4) |
+---------------------------------------+
| 0.25 |
+---------------------------------------+

-- Значение haystack является именем столбца, а значение needle — константным значением.
mysql> select rowkey,ngram_search(rowkey,"31dc496b-760d-6f1a-4521-050073a70000",4) as string_similarity from string_table order by string_similarity desc limit 5;
+--------------------------------------+-------------------+
| rowkey | string_similarity |
+--------------------------------------+-------------------+
| 31dc496b-760d-6f1a-4521-050073a70000 | 1 |
| 31dc496b-760d-6f1a-4521-050073a40000 | 0.8787879 |
| 31dc496b-760d-6f1a-4521-05007fa70000 | 0.8787879 |
| 31dc496b-760d-6f1a-4521-050073a30000 | 0.8787879 |
| 31dc496b-760d-6f1a-4521-0500c3a70000 | 0.8787879 |
+--------------------------------------+-------------------+