Функция подобия в Ruby на Rails - PullRequest
0 голосов
/ 19 февраля 2020

Например, у меня есть строка VOLVO EW 160 C NEUER MOTOR / NEW ENG. Где VOLVO - это бренд, а EW 160 - это модель.

И у меня есть две таблицы с Брендами и Моделями . Таблица моделей, например, разделенная запятой ,: EW, E, W, S, C, Z, 10, 16, 1.6, 10, 150, 160, EW160, EW 160.

Как я могу определить модель? Искал некоторую документацию о той же функции в PostgreSQL.

RoR имеют некоторую функцию подобия, или как лучше всего обнаружить похожие строки?

Что является более гибким / продуктивным способом? (PostgreSQL или RoR)

UPD: Другой пример строки: VOLVO EW-160 1999, 9000 operating hours. Где модель EW-160, но в базе данных у меня нет этой модели, но есть аналогичные модели EW160 или EW 160

1 Ответ

0 голосов
/ 19 февраля 2020

при условии, что наилучшее совпадение - самое длинное, включенное в строку:

string = 'VOLVO EW 160 C NEUER MOTOR / NEW ENG'
models = ['EW', 'E', 'W', 'S', 'C', 'Z', '10', '16', '1.6', '10', '150', '160', 'EW160', 'EW 160']

matching_models = models.select{ |m| string.include? m }

best_match = matching_models.max_by(&:length)
...