Самым простым полнотекстовым индексом / поиском, который я использовал, является mysql. Вы просто вставляете в таблицу соответствующий индекс. Вам нужно потратить некоторое время на разработку относительных весовых коэффициентов для полей (совпадение в названии может быть выше, чем совпадение в теле), но это все возможно, хотя и с некоторой ошибкой sql.
Plucene устарела (за последние два года на нем не велось активной работы) в пользу KinoSearch. KinoSearch отчасти вырос из понимания архитектурных ограничений Plucene.
Если у вас ~ 300 PDF-файлов, то после того, как вы извлекли текст из PDF (при условии, что в PDF есть текст, а не только изображения текста;) и, в зависимости от объема запросов, вы можете найти, что grep достаточно.
Тем не менее, я бы настоятельно рекомендовал маршрут mysql / kinosearch, так как он охватил большую часть основ (стемминг, стоп-слова, взвешивание терминов, разбор токенов), от которых вам не удастся увязнуть.
KinoSearch, вероятно, быстрее, чем маршрут mysql, но маршрут mysql дает вам более широко используемое стандартное программное обеспечение / инструменты / опыт разработчика. И вы получаете возможность использовать возможности sql для увеличения количества поисковых запросов в свободном тексте.
Так что, если вы не говорите ОГРОМНЫЕ наборы данных и безумные объемы запросов, мои деньги будут на mysql.