Существует. И достаточно много алгоритмов. Если делать простенький поиск, то можно (и, наверное, даже лучше, чтобы разобраться, как всё работает и т.д) вывести свою формулу, например: Сумма( 1/частота_появления_слова_в_тексте + 1/порядок_слова_в_запросе + 1/длина_слова
) для каждого слова в запросе. Также можно учитывать слова которые идут рядом.
Перед тем как применять формулы ревалентности, можно применить фильтр Стемминга для текстов перед индексацией и для запроса. Если нужно находить схожие статьи, можно применить Латентно-семантический анализ, применить сингулярное разложение и т.д. Всё зависит от того, что именно вам нужно.
А если это нужно для какого-то проекта, к которому нужен серьёзный подход - рекомендую применить уже готовые решения, например Sphinx или другие ...