Позвольте мне описать мою проблему. Существует строка ввода и таблица, содержащая много тысяч строк. Я ищу лучший способ поиска наиболее похожих строк * во входную строку. Поиск должен вернуть список из ~ 10 предложенных строк, отсортированных по степени сходства. Строки также имеют числовые веса (популярность), связанные с ними в базе данных, в другой колонке, поэтому те, у которых более высокий вес, должны иметь более высокую вероятность появления в результатах, если это возможно.Масштабируемый способ поиска (похожих) строк в базе данных
Для чего это лучшая библиотека? Думаю, я ищу что-то похожее на Elasticsearch. У меня нет большого опыта работы с этими библиотеками, поэтому мне нужно было бы легко включить в мой проект и, желательно, с открытым исходным кодом. Я использую Python (Flask и SQLAlchemy) и Postgresql, но также могу использовать, например. Node.js, если необходимо.
* Я также хочу уточнить, какое сходство я ищу. В идеале это было бы семантическое сходство, но лексическое сходство тоже прекрасное. Я был бы доволен всем, что работает хорошо, легко реализовать и максимально масштабируемо и качественно.
Пример входных данных предложение:
- мне не нравится cangaroos.
Пример предложения из базы данных:
- Cangaroos не мой любимый.
- Кангаро являются злыми.
- У меня когда-то был кангаро. Больше никогда.
Эти предложения должны появиться в первую очередь потому, что «cangaroo» не является частым словом в моей базе данных, поэтому любая строка со словом «cangaroo» должна иметь высокую вероятность появления в результатах. Вероятно, гораздо труднее обнаружить «не нравится», так что часть полностью необязательна для меня.
P.s. Может ли полный текстовый поиск PostgreSQL сделать что-то вроде этого?
спасибо.
Спасибо, Joanolo, он отлично работал! – Ognjen
Если кому-то нужно сделать это в Flask-SQLAlchemy, дайте мне знать, и я отправлю свой код. – Ognjen