Re: PostgreSQL pg_trgm, не понимаю, как работает word_similarity
От: BlackEric http://black-eric.lj.ru
Дата: 04.10.25 17:39
Оценка: 81 (2)
Здравствуйте, serjjj, Вы писали:


S>Почему в первом случае значение 0.6666667, а в двух других 0.5?



Если в кратце, то

word_similarity ( text, text ) → real

Возвращает число, представляющее наибольшую степень схожести между набором триграмм в первой строке и любым непрерывным фрагментом упорядоченного набора триграмм во второй строке. Подробнее об этом рассказывается ниже.


F.33. pg_trgm — поддержка определения схожести текста на основе триграмм

|W1 ∩ W2| / G , (1)

где

• W1 – набор слов первого аргумента,

• W2 – набор слов некоторого непрерывного отрезка слов второго аргумента,

• G – max(|W1|, |W2|).

Из всех возможных отрезков второго текста берётся тот, для которого значение (1) максимально.

Функция не симметрична: word_similarity(a,b) обычно ≠ word_similarity(b,a).

Первый текст совпадает сразу с двумя словами в единственном трёхсловном
отрезке 'abc 123 def' → 2/3.

• В более длинных строках эти два слова разделены, поэтому
наилучший отрезок содержит только одно совпадение из двух → 1/2.
https://github.com/BlackEric001
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.