Сопоставление данных с таблицей mysql

goacher

Новичок
Сопоставление данных с таблицей mysql

Есть переменная ФИО
в таблице есть поле ФИО.
Нужно искть значение переменной ФИО в поле таблицы ФИО с допустимым различием в 4 символа.

Т.е Переменная "Громов Иван Иванович"
а в таблице "Громов Ыван Ыванавич" - оно находило

т.е максимальное возможное число ошибок - это 4 возможно ли такое реализовать?
 

StiM

Новичок
Если вдруг решишь задачу - напиши как ты ее решил ))) Интересно )))
 

goacher

Новичок
если профессионалы задумались))) так я врядли решу такую))))
 

StiM

Новичок
Если дело в Имени и Отчестве, предлагаю просто выводить всех однофамильцев :)
 

damngood

Мозг был, но ушел...
Эм, ну для начала я бы хранил имя, фамилию и отчество в отдельных полях в таблице БД. Так мне кажется удобней будет раз в 10.

Что же касательно проблемы. То есть одна маленькая идея, как реализовать ее именно каждый решит сам, но суть такова:

1. для оригинала, считаем количество символов, получая количество вхождений каждого, то есть для оригинала (Громов Иван Иванович) получим:
г=1
р=1
о=3
м=1
в=4
и=3
а=2
н=2
ч=1

2. То же самое делаем для искомой строки.

3. Поэлементно сравниваем два массива.

4. Вот как произвести расчет вменяемо ошибки в 4 символа - пока не придумал. Но сделать это можно, как мне кажется.
 

goacher

Новичок
нужно найти переменную фио в базе с полем фио, учесть что может быть несколько описок.
 

damngood

Мозг был, но ушел...
tardis
Что-то я в постановке задачи не вижу, чтобы автор написал, что решение перебором ему не подходит ^^
 

tardis

lazy
так не получится, уже сказали
тока не переменную, а запись с нужным значением фио
 

Фанат

oncle terrible
Команда форума
Проблема-то не в переборе.
А в том, что автору задача с нечетким поиском кажется такой же тривиально решаемой, как и поиск по полному совпадению.
 

tardis

lazy
решение перебором ему не подходит
ты предлагаешь каждый раз выбирать из таблицы абсолютно все записи? :rolleyes:
по-моему автор все-таки хотел сделать это запросом

-~{}~ 18.11.09 16:57:

это не проблема, а всего лишь недостаток опыта
поначалу часто кажется, что для всего есть "магические" решения, и нужно только выяснить, в чем фокус
 

StiM

Новичок
Подход с перебором, предложенный damngood, довольно заманчив, только такой перебор должен быть произведен относительно всей выборки из таблицы. Мне кажется это как-то довольно сложнореализуемый метод, если он вообще реализуем.
 

damngood

Мозг был, но ушел...
tardis
Проблема обписана так, что не указывается количество данных, или я что-то упустил?
 

tardis

lazy
упустил в любом случае то, что из одного набора символов можно составить кучу слов, в т.ч. имен :p

проще тогда поэлементно сравнивать строки, хотя тут тоже будут свои нюансы, например, в случае пропуска буквы
 

damngood

Мозг был, но ушел...
Что-то мне такое совпадение кажется маловероятным.

В любом случае нагуглено было следующее:

http://mechanoid.narod.ru/nns/fsearch/index.html
 

Adelf

Administrator
Команда форума
Ну если решать перебором, то есть функции в php вычисляющие разницу между строками.
например levenshtein.

Если без перебора... то задача нетривиальна.
 
Сверху