Какова была бы логика функции, предлагающей пользователю похожие посты перед публикацией нового поста? - PullRequest
0 голосов
/ 24 июня 2019

Я создаю своего рода форум и хотел бы создать функцию, которая дает пользователю предложения по аналогичным постам перед публикацией нового поста, как в SO. Я не уверен, как создать эту функцию наиболее эффективным способом?

Какими будут параметры для определения аналогичного поста? Это нужно искать только по названию поста, но все еще не уверена, какая логика стоит за ним.

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

Буду признателен за вклад и советы по этому поводу, спасибо!

** Пытался многократно гуглить, но поисковый запрос выдает несвязанные результаты («как создавать похожие посты»). Так что, если есть какая-то информация о том, что я тоже полюбил бы ссылку, я не смог бы найти ее сам.

1 Ответ

0 голосов
/ 24 июня 2019

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

Расстояние Левенштейна - это один из популярных алгоритмов вычисления. Чем ниже расстояние Левенштейна, тем меньше одинаковых строк:

StringUtils.getLevenshteinDistance("book", "back") == 2
StringUtils.getLevenshteinDistance("gold", "cold") == 1
StringUtils.getLevenshteinDistance("gold", "coin") == 3
...