В случае электронной почты все просто: используйте любой популярный инструментарий поиска и создайте индекс для каждого пользователя. Это просто, потому что индексы не должны пересекаться, иначе вы нарушите конфиденциальность пользователей. Кроме того, перекрытие может искажать такие цифры, как IDF. (Может возникнуть искушение индексировать электронные письма, отправленные нескольким пользователям, только один раз, но последствия для безопасности и конфиденциальности этого не стоят. Диск дешев.)
Если обычная коллекция документов должна быть проиндексирована для персонализированного поиска, боюсь, вы сами.