Перечень статей   Choose language


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


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

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

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

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

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

Выводимые записи отсортированы и выдаются в порядке возрастания разногласия суммы отклонения и несовместимости.

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