[Oracle] Fuzzy search
От: irq  
Дата: 08.05.15 08:58
Оценка:
Добрый день

возникла потребность реализации нечеткого поиска по нескольким полям таблицы. в связи с этим появился вопрос: каким образом реализовать нечеткий поиск по нескольким полям.

дано:
БД Oracle версии 11.2.0.4
таблицы Клиент(ФИО, ДопИнформация) и Стоплист(ФИО)

необходимо:
при заведении клиента проверить нет ли такого человека в таблице Стоплист. при этом надо учесть что оператор может ошибиться и вбить неправильно ФИО (напр.: Иванов — Ивонов, но чаще казусы случаются с ФИО иностранных граждан Мухамед — Мухамет — Мухамбет — Муххамед — и тд). при нахождении вывести список совпадений для того чтобы оператор мог визуально сверить и принять решение о вводе данного клиента в таблицу.


у Oracle есть несколько вариантов реализации

1 проидексировать поле CTXSYS.CONTEXT и потом строить запросы. но у нас стоит версия БД 11.2.0.4 в которой AUTO_LEXER отключен. может ли решить вопрос поднятие БД версии 12с и настройки db link между ними только для проверки схожести?
2 или воспользоватся процедурой UTL_MATCH.EDIT_DISTANCE?
3 может есть другой вариант?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.