Я думаю, было бы очень неправильно предполагать, что Ferret - самый популярный выбор для этого. Большинство людей, которых я знаю, бросили Ферре и заменили его Сфинксом. И люди, которые по какой-то причине не могут использовать Sphinx, выбрали Xapian.
При этом ответ на ваш вопрос, вероятно, будет в значительной степени одинаковым независимо от выбранной вами системы индексации:
Когда вы имеете дело с разрешениями и индексацией, вы не можете эффективно индексировать что-либо, связанное с системой разрешений, потому что она будет зависеть от пользователя. Все ваши разрешения должны где-то жить в ваших моделях / контроллерах. Мне нравится помещать все свои права доступа в модуль, а затем включать его в мою модель, чтобы я мог легко делиться им между моделями.
Разбиение на страницы может быть настоящей болью для такого рода вещей, потому что вы запрашиваете 10 элементов из вашей поисковой системы, а затем ваш код доступа отклоняет 5 из этих элементов, что означает, что вы должны продолжать выполнять поиск до тех пор, пока у вас не появятся первые десять элементов. для отображения. И теперь, когда вам нужна вторая страница, ну, тогда все превращается в настоящий беспорядок. Боже упаси, они решают перейти прямо к десятой странице, потому что теперь вы не можете делать такие трюки, как предоставление стартового идентификатора вместо номера страницы. На самом деле, это совсем не то, что ты хочешь делать, если можешь помочь.
На самом деле не существует "умных" способов обойти несоответствие между разрешениями и полнотекстовой индексацией. По крайней мере, ни один из тех, о которых я знаю. Это просто боль.
Я предложил своему боссу, когда мы только начинали, что единственным разумным решением была система равных прав доступа: если мы дадим вам имя пользователя и пароль, у вас будет доступ. Он не был фанатом.