Сложный, но интересный поисковый запрос к бд

h0x
Дата: 30.01.2013 05:30:40
Здравствуйте, помогите пожалуйста составить правильны поисковый запрос к бд.
Дело в том, что есть таблица с полями, в которой храниться информация о пользователях.
Фамилия, Имя, Отчество, Страна, Регион, Город и т.д

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

То есть если гость пишет
Василий Петрович Забалодский
или
Петрович Забалодский Василий
или
Забалодский Василий Петрович
или
Россия, Забалодский Василий, Москва

то поиск должен работать и выдать нам этого человека, если на него есть какая то информация в бд. Не хотелось бы потерять из виду его.

Благодарю тех, кто поможет мне. Жду вашего ответа здесь или на email: h0x5x1@gmail.com
tanglir
Дата: 30.01.2013 05:51:58
h0x,

А если в БД есть Забалодский Василий Васильевич?

ЗЫ.
h0x
есть таблица с полями, в которой храниться информация о пользователях.
Фамилия, Имя, Отчество, Страна, Регион, Город и т.д
Пересматривайте структуру, пока не поздно.
h0x
Дата: 30.01.2013 06:09:02
Ничего страшного, если есть Забалодский Василий Васильевич, то пусть найдутся.

Если мы ищим:
Россия, Забалодский Василий, Москва и есть человек с другим отчеством в бд, то пусть найдется и он, например тогда найдется:

Россия, Забалодский Василий
Россия, Забалодский Василий Васильевич

Ничего страшного, пусть люди выводятся с такими же фамилиями именами и т.д...Там уже дело за пользователем, прокрутит ниже и найдет по аватарке нужного.
tanglir
Дата: 30.01.2013 06:18:25
h0x, прикрутите поиск гугла, он всё найдёт :)
Или фултекст.
h0x
Дата: 30.01.2013 07:16:44
Дорогой tanglir я очень ценю вашу креативность..., если бы мне подходил гугл поиск я б наверняка им воспользовался, не так ли?

К сожалению, вопрос остается не решенным.
tanglir
Дата: 30.01.2013 08:12:34
h0x, пичаль-пичаль... ну делайте поиск в каждом поле по каждому введённому слову, или вам ещё про OR рассказывать надо?
MasterZiv
Дата: 30.01.2013 13:15:24
h0x
Здравствуйте, помогите пожалуйста составить правильны поисковый запрос к бд.
Дело в том, что есть таблица с полями, в которой храниться информация о пользователях.
Фамилия, Имя, Отчество, Страна, Регион, Город и т.д

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

То есть если гость пишет
Василий Петрович Забалодский
или
Петрович Забалодский Василий
или
Забалодский Василий Петрович
или
Россия, Забалодский Василий, Москва

то поиск должен работать и выдать нам этого человека, если на него есть какая то информация в бд. Не хотелось бы потерять из виду его.

Благодарю тех, кто поможет мне. Жду вашего ответа здесь или на email: h0x5x1@gmail.com


Это не интересный поисковый запрос, это идиотский поисковый запрос.
Ты с самого начала нарушаешь целостность данных в твоей БД, а потом хочешь по ней что-то искать...
Ну... как бы дело твоё, но и проблемы все огребай сам тогда.

Целостность данных должна обеспечиваться ПРИ ВВОДЕ данных в БД, а не при запросе из неё.

А решается задача очень просто -- ты, вместо того, чтобы тешить себя иллюзиями, что в поле "Город" у тебя действительно город, а не отчество, заводишь ОДНО тексовое поле с данными, которые вводит пользователь, и строишь на это поле полнотекстовый индекс,
который потом используешь для полнотекстового запроса для поиска данных.

Для полнотестового поиска не обязательно использовать MySQL, можно использовать любой FTI.

Учти, что очень часть полнотекстовые индексы работают как off-line-овые, т.е. не обновляются после изменения каждой записи, а перестраиваются, скажем, раз в день.
MasterZiv
Дата: 30.01.2013 13:16:41
h0x
Дорогой tanglir я очень ценю вашу креативность..., если бы мне подходил гугл поиск я б наверняка им воспользовался, не так ли?


Так тебе он ПОДХОДИТ, ты просто об этом не знаешь.
вадя
Дата: 30.01.2013 14:19:36
MasterZiv
Ты с самого начала нарушаешь целостность данных в твоей БД, а потом хочешь по ней что-то искать...
Ну... как бы дело твоё, но и проблемы все огребай сам тогда.

Целостность данных должна обеспечиваться ПРИ ВВОДЕ данных в БД, а не при запросе из неё.

А решается задача очень просто -- ты, вместо того, чтобы тешить себя иллюзиями, что в поле "Город" у тебя действительно город, а не отчество, заводишь ОДНО тексовое поле с данными, которые вводит пользователь, и строишь на это поле полнотекстовый индекс,
который потом используешь для полнотекстового запроса для поиска данных.


прежде, чем так выступать о целостности данных, внимательно почитай ТС


данные у него введены правильно!!!
автор
h0x, пичаль-пичаль... ну делайте поиск в каждом поле по каждому введённому слову, или вам ещё про OR рассказывать надо?


нафига делать кучу инпутов, когда можно одним решить задачу?
и OR здесь совсем не в тему

вот 13833934 и далее. пример приведен,
где поле name заменяется на concat(Фамилия, Имя, Отчество, Страна, Регион, Город )