Перечень статей   Терминология   Choose language


Использование неточных названий в запросах


К строкам может быть применена операция сравнения, которая называется "приблизительно равно" и обозначается "≈". Она возвращает натуральное значение, равное отклонению двух строк в баллах, или "null", если две строки не равны.

Между словами бывают следующие отличия (differences): лишняя буква, пропущенная буква, другая буква (т.е. одна буква заменена на другую). Отличия "заглавная буква" - "строчная буква", "аббревиатура" - "слово из строчных букв" рассматриваются как отличие "пропущенная буква" (как наличие-отсутствие одной из двух управляющих отметок, создающих заглавную букву и аббревиатуру). Каждое отличие оценивается в 4 балла (т.к. неуместность [см. ниже] принимает значения в диапазоне от нуля до трех). Из всех вариантов выбирается такой набор отличий, при котором сумма баллов минимальна - эта минимальная сумма называется несовместимостью (incongruity). При обнаружении более двух отличий "другая буква" слова не являются (приблизительно) равными.

select  ...  where        @fld≈"different";
select  ...  where        @fld≈"diferent";
select  ...  where        @fld≈"defferent";
Если, кроме того, используется управляющие символы для пределов и индексов, то разница положений двух слов относительно базовой линии называется неуместностью (irrelevance), которая вычисляется так: первые одинаковые символы положений отбрасываются, максимальная длина получившихся обрубков есть неуместность. Сумма несовместимости и неуместности называется отклонением (deviation) двух слов.

Между фразами бывают следующие отличия (differences): лишнее слово, пропущенное слово, перестановка двух слов, другое слово (т.е. одно слово заменено на другое), свертка (нескольких подряд идущих слов в аббревиатуру из начальных букв каждого слова). Каждое отличие оценивается в 16 баллов (для свертки - по 16 баллов на каждую букву аббревиатуры). Делается попытка разобрать отличие "другое слово" как набор отличий между парой слов с целью уменьшить количество баллов (если два слова не равны, то засчитывается отличие "другое слово"). Пробел между словами может быть исключен или заменен на дефис - и то, и другое оценивается в 1 балл. Из всех вариантов выбирается такой набор отличий, при котором сумма баллов минимальна - эта минимальная сумма называется отклонением (deviation). При обнаружении более двух отличий "пропущенное слово" фразы не являются (приблизительно) равными.

select  ...  where        @fld≈"algebraic equations";
select  ...  where        @fld≈"equations algebraic";
select  ...  where        @fld≈"AE";
select  ...  where        @fld≈"differential equations";

Разногласие (variance) двух строк, если хотя бы одна из них содержит более одного слова, вычисляется также, как отклонение двух фраз - но перестановка через любой знак пунктуации (в т.ч. "точку" в конце предложения) оценивается в 64 балла, а знак "точка" в конце строк (каждая возможно из нескольких предложений) не принимается во внимание. Если одна из сравниваемых строк есть "null", то разногласие равно 16 баллов.

Записи, вошедшие в результат запроса, отсортированы и выдаются в порядке возрастания разногласия (т.е. сначала идут записи с наименьшим разногласием).

select  ...  where        @fld≈"algebraic equations, differential equations";
select  ...  where        @fld≈"algebraic and differential equations.";
select  ...  where        @fld≈"AE, DE";


P.S.

Величину разногласия можно присвоить поля таблицы.

insert  ...  values(      @fld≈"algebraic and differential equations" );
update  ...  set    @fld2=@fld≈"algebraic and differential equations";


Тюрин Дмитрий



Перечень статей   Терминология   Choose language