Если вы собираетесь развивать поисковую систему, вам придется очень быстро задуматься о масштабируемости. Сортировка в поисковых средах - знакомая проблема. Вы должны взглянуть на реализации поиска от Google! Способ сортировки должен зависеть от алгоритма ранжирования . Разработка алгоритма ранжирования, ориентированного на домен, не должна отличаться от ранжирования как сервисного подхода
Какой язык вы используете, ваш выбор. Если вы выберете C / C ++ Интерфейс передачи сообщений (MPI) для распределенных вычислений. Если вы используете Java, взгляните на JMS и GridGain (GridGain реализует Googles MapReduce).
Другой вопрос, как хранить ваши данные (распределенные, быстрые, отказоустойчивые)! Для Java взгляните на Project Voldemord (это одна из лучших систем, которую вы можете получить бесплатно.
Подробнее об архитектуре Google читайте на веб-сайте с высокой масштабируемостью .
По вопросам DDD загляните на dddcommunity.org , домашнюю страницу самого Эрика Эванса;) Он написал очень хорошую Книгу Доменно-управляемый дизайн . С DDD все в порядке, потому что он обеспечивает целостность домена.
Простая модель может быть:
page ( URL url, BigInt rank, List<String> keywords,
List<URL> links, List<URL> outLinks, Content ref)
content ( GzippedBytes[] content )
Если в систему добавляется новый узел, он должен реагировать на такие вещи, как « setLinks » и т. Д., Чтобы он мог получить свой PageRank самостоятельно.
Клиент довольно прост, он выполняет только поиск (ключевые слова) , который сортируется по PageRank.
Вот сервис пример реализации PageRank в Java.