Не уверен, что я следую тому, что вы описываете, но, похоже, вам нужно сделать следующее:
- В контексте поиска представьте различные типы объектов вобщий способ
- В наборе результатов может быть возвращено потенциально большое количество сущностей
- Требуется предоставить дополнительную глубину только при обращении к отдельным сущностям
Это звучит какидеально подходит для Solr .Solr - это поисковая платформа с открытым исходным кодом, построенная на основе Lucene .Он обеспечивает доступ через HTTP к поисковому индексу на основе Lucene, используя XML в качестве основы полезной нагрузки.Он ориентирован на REST, также говорит на JSON, поэтому не зависит от языка.
Большинство реализаций Solr работают за кулисами, а доступ к результатам предоставляется на странице результатов поиска на веб-сайте.Ваши требования могут действительно подходить для предоставления доступа к запросу сервера Solr напрямую.Все элементы работы с результатами уже обработаны - пейджинг, фильтрация, сортировка и т. Д. Вся логистическая работа, которую вы действительно не хотите делать самостоятельно.
Как разработчик, ваша настоящая работаопределить, что входит в ваш поисковый индекс.Индекс можно структурировать так, чтобы он содержал общие элементы ваших вариантов сущностей, а скорость поиска была бы невероятно высокой.После извлечения заданного результирующего набора ваше приложение может извлечь более глубокие сведения о сущности из ее исходного источника (если вы не хотите помещать всю сущность в поисковый индекс, что является еще одной возможностью.)