Вероятно, ваш друг имел в виду объединение всех доступных для поиска полей в одну таблицу.
Основная идея состоит в том, чтобы создать таблицу, которая действует как индекс.Один столбец индексируется и хранит слова, тогда как другой столбец содержит список ссылок на объекты, которые содержат это слово в одном из этих полей (например, объект может быть изображением, а его полями для поиска могут быть заголовок и комментарии).
Список ссылок может храниться разными способами, так что вы можете, например, иметь строку переменной длины, скажем, BLOB, и в ней хранить JSON-кодированный массив идентификаторов и типов объектов, поэтомучтобы потом их можно было легко найти, выполнив поиск этого идентификатора в таблице, соответствующей типу объекта).
Конечно, при любом добавлении / удалении / изменении индексируемых данных вы должны обновить свой индекссоответственно (но вы можете использовать ленивые методы обновления, которые в конечном итоге обновляют индекс в фоновом режиме - это потому, что большинство людей ожидают, что индексы будут точными в течение, возможно, нескольких минут до текущего состояния данных. Одна реализациятакой индекс Apache Cassandra , ноЯ бы не стал использовать его для небольших проектов, где вам не нужны распределенные базы данных и тому подобное).