@rudejah

Как быстро искать по базе, ФИО?

Доброго времени суток!

Занимаюсь разбором отчетов с банков.
Чтобы правильно искать кто-же и за что-же было оплачено - нужно лицевой счет, ФИО, и если этого ничего нет - то адрес.
Вся эта информация может указываться в хаотичном порядке, или совсем не указываться.
С лицевым счетом - получилось вытащить.
Теперь хочу попытаться вытащить еще и ФИО.

Как указывается фио? Да как угодно! Например вот так:
1. петров и и
2 Петров Иван И
3. Петров И Иванович
4. петров и. и.
5. ПЕТРОВ ИВАН ИВАНОВИЧ
6. Оплата за Петрова Ивана Ивановича
7. Петров И.И.
8. Петров И. И.
9. ПЕТРОВ И. И.
10. ПЕТРОВ и и
11. Петровы Н. Н. и Ж. Н.
и все похожие варианты

Сравнение идет с биллинговыми записями, которые тоже в таком же хаотичном порядке были заведены =(

Идея была такая - перевести в нижний регистр обе стороны, проверить если ИО полностью подходит, то хорошо, если нет, то оставлять по одной букве (первой) и тогда производить сравнения..

Может еще есть какие варианты? Или кто-то еще
  • Вопрос задан
  • 2484 просмотра
Пригласить эксперта
Ответы на вопрос 2
@gurinderu
java developer
Попробуйте делать так) SELECT * FROM some_table WHERE BINARY name=:text_to_find
Ответ написан
viktorvsk
@viktorvsk
Как быть с вариантами 6 и 11, в перворм приближении, хз.
В остальных случаях, если интересует "хотя бы частичное совпадение", я бы предложил перевести все в нижний регистр, представить, что у вас есть "3 элемента (составляющих)". Один из них - фамилия. Другие - имя и отчество (неважно, какой порядок, инициалы или полное и т.д.). А далее - сравнивать с заранее подготовленной базой фамилий. Думаю, для русскоязычного населения, для 80% случаев, этот список все же будет не сильно большим.

Алгоритм таков примерно. Нашли среди трех элементов слово, подходящее под фамилию. Дальше проверяете оставшиеся два элемента. Сначала по полному совпадению (как вариант, алгоритмом нечеткого сравнения и пробуя подобрать желаемый порог), если не помогло - по инициалам.

Мне кажется, кое-как результат может быть удовлетворительным (для первого приближения, плюс - реализация не так сложна для проверки). А дальше уже отталкиваться от эффективности и поставленных целей.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы