Я действительно не знал, что назвать это.MySQL Группировка похожих строк на основе записей во второй таблице
У меня есть несколько таблиц структурированы как этот
А "предложения" таблица
id | sentence | ...
----------------------------
1 | See Spot run | ...
2 | See Jane run | ...
3 | Jane likes cheese | ...
А "слова" стол
id | word (unique)
----------
1 | See
2 | Spot
3 | run
4 | Jane
5 | likes
6 | cheese
и "word_references" стол
sentence_id | word_id
---------------------
1 | 1
1 | 2
1 | 3
2 | 1
2 | 3
2 | 4
3 | 4
3 | 5
3 | 6
I хотите вернуть список пар предложений, которые похожи друг на друга на основе общих слов, упорядоченных по сходству. Поэтому он должен вернуть:
one | two | similarity
----------------------
1 | 2 | 2
2 | 3 | 1
, потому что предложения 1 и 2 доля двух слов: «Смотри» и «бежать», в то время как предложения 2 и 3 доля одного слова: «Джейн».
Чтобы сделать его немного аккуратнее и, возможно, быстрее: использовать 'внутренний join' вместо' левой join', положить оба условия 'r1.sentence_id
@VladimirBaranov thx, имеет смысл –
Отлично работает. Его довольно медленно, но это следует ожидать при выполнении операции O (n^2) в моей среде. Интересно, есть ли какой-либо индекс, который можно добавить, или другую таблицу, которая может ускорить работу. –