Каков наиболее эффективный способ поиска по многим персонажам? Как вы думаете?
Предположим, что сайт построен на PHP и MySQL.
Чему я должен научиться, чтобы иметь возможность построить это максимально эффективно? Есть ли какие-то алгоритмы, которые я должен чему-то научиться?
Алгоритм индексации текста
Google использует заказное решение для баз данных BigTable, http://en.wikipedia.org/wiki/Big_table , которое запускается через сотни серверов по всему миру. Таким образом, они быстры, потому что они написали программное обеспечение специально, чтобы быть быстрым, и настроили аппаратное обеспечение таким образом, чтобы они могли выжать максимум из него.
Вы можете получить достойный набор с PHP и MySQL, но как только вы начнете работать с очень большими наборами данных, MySQL и любая другая общая база данных начнут прятаться под напряжением. Если вы хотите узнать больше об этом, стоит начать поиск параллелизма в дизайне базы данных (кратко объясняется в http://en.wikipedia.org/wiki/Concurrency_control среди других), что является тематическим способом слишком большой, чтобы покрыть ответ в stackoverflow =)
Google выходит за рамки просто оптимизации баз данных и кода. Они также выполняют множество распределенных программ. Хотя точные механизмы, которые они используют для таких систем власти, как Gmail, являются охраняемыми секретами, известно, что у них есть целые фермы компьютеров, подключенных к сети, каждый из которых работает с частями индекса в любой момент времени, а не только с одним сервером.
Для MySQL рассмотрите функции полнотекстового поиска .
Это предполагает, что ваш контент хранится в базе данных (например, в CMS).