Вот мое решение за два цента:
Чтобы добиться наилучшего результата, нам нужно поставить «вес» на результаты запроса.
Для начала предполагается, что каждое представление в базе данных имеет нулевой вес.
Затем, если отправка в «пуле» делится одним тегом с текущей отправкой, мы добавляем +3 к найденной отправке. Следовательно, если найдена другая отправка, которая разделяет два тега с текущей отправкой, мы добавляем +6 к весу.
Далее мы разбиваем / разбиваем заголовок текущей заявки и удаляем «стоп-слова».
Я видел список стоп-слов от Google, но сейчас я определю свои стоп-слова: [«of», «a», «the», «in»]
Пример:
Название «Лучшая подача всех времен»
Приведите массив: [«The», «Best», «Submission», «of», «All», «Times»]
Удалить стоп-слова: [«Лучший», «Представление», «Все», «Время»]
Затем мы запрашиваем базу данных, содержащую любые из названных названий, и для каждого результата добавляем вес: + 2
И, наконец, отсортируйте список по убыванию по весу и возьмите лучшие результаты N.
Что вы думаете? (будь нежным!)