Побольше специфика вашей конкретной проблемы было бы хорошо. Существует множество различных методов, которые вы можете использовать. Многие из них управляются другими данными. Конечно, вы можете использовать Lucene и создавать свои собственные индексы. Есть привязки для многих языков к lucene. Перемещение вверх также есть проект Solr, который представляет собой Lucene с множеством инструментов и дополнительной функциональностью. Это может быть больше в соответствии с тем, что вы ищете.
Намерение сложно, и большинство современных поисковых систем полагаются на статистическое намерение помочь в упорядочении результатов. Вы всегда можете использовать эту полезную кнопку в статье и хранить текст запроса, который ведет к полезным документам. Затем вы можете добавить слой индекса в индекс, чтобы поднять конкретные слова или фразы и помочь им указать на определенные документы.
Некоторые вещи, о которых нужно подумать ... Сколько документов? Какова средняя длина? Часто ли они обновляются? Что делают пользователи с документами? Как выглядит распространение уникальных слов в документах? (Более просто легко сопоставить запрос с конкретными документами на основе общих уникальных функций.)
Если это в Интернете, вы всегда можете создать поисковую систему Google, которая просто ищет ваш сайт, хотя вы может показаться, что это является неоптимальным по ряду причин.
Вы всегда можете начать с простого индекса и постепенно сделать его более сложным, разговаривая с пользователями и получая данные.