@Yunna

Как написать поиск по базе данных?

Есть база данных и форма поиска на сайте. Как написать программу для поиска по всей базе данных?
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 2
@BATPYIIIKOB
PHP, JS
Чем вас не устраивает Sphinx ?
Да практически любую ORM можно адаптировать под любые фильтры. Не понятна суть проблемы.
Ответ написан
gzhegow
@gzhegow
Думал, стану умнее, когда адаптируюсь, но нет
Оттолкнуться от того что пользователь может передать (порядок важен везде, как задали - так и ищем)

- фильтры (как правило массив критериев [ [ 'hello', 'like', 'world*' ], [ 'item', '>', 100 ] ])
-- фильтры типа И/ИЛИ/НЕ - как правило отправляются в один уровень, либо вложенным массивом с ключами [ y => [filter,filter], n => [ y => [filter, filter], 'n' => [ filter ] ];
- сортировку (как правило массив из массивов [ [ 'hello', 'asc' ], [ 'item', 'desc' ] ]
- лимит записей
- отступ от начала таблицы
- номер страницы (отступ = лимит умножить на (номер-1))

В твоем случае он может передать еще источник данных - где искать "база такая то", таблица "такая то"

Потом написать обертку которая преобразует входящий GET запрос из массива в некий объект который знает про все вышеперечисленное чтобы дальше его передавать.

Дальше этот объект передается в некий класс, который умеет искать по источнику данных. Репозиторий. И там делаются функции findByCriteria(Criteria $criteria) во все источники данных - где-то в апишку, где-то в базу, где-то в одну таблицу, где-то в другую.

Задачка которую решает каждый разработчик на ПХП. А единого решения так и нет.
Причем это не разу не легкая задачка если её видеть в том виде как автор написал.
Если задача просто из таблицы по условию выдрать - то она упрощается. Не в 2 раза. А в сто-два.

У архитекторов конечно есть. Иначе они бы не считали себя архитекторами. Но тебе они не дадут. Иначе ты тоже станешь архитектором, а так нельзя.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
18 окт. 2019, в 23:45
150000 руб./за проект
18 окт. 2019, в 20:01
15000 руб./за проект