На этапе поиска или индексации? По какому алгоритму определяется вес и уникальность?
На этапе поиска.
Пользователь делает запрос, например "скачать лекции по геометрии".
Производится стандартная обработка: нижний регистр, trim, убираем кавычки и др. спецсимволы, кроме точек.
Для определения веса слова вычисляется его уникальность. Она вычисляется на основе рейтинга уникальности слов (база данных слов и частоты их встречаемости). Например, "лекции" более частоупотребительное слово, чем "геометрии", значит и вес у них разный. Вес = максимальная частота в рейтинге - частота конкретного слова. Слова, которых вообще нет в рейтинговой базе, является самыми весомыми.
А такие слова как "скачать", "бесплатно" вообще удаляются из поиска.
Каким способом выделяется корень?
Есть массив окончаний (ая, ий, я...) и приставок. Если они есть в данном слове запроса, они убираются. Как конкретно? Секрет

Например "геометрия" преобразуется в "геометр", что позволяет искать также слова "геометрический" и др.
Зачем транслит?В общем-то он и не обязателен. Но дополнительно можно искать транслитированный вариант запроса. Только умножить вес данного запроса на коэффицент 1/2.
Прощу обратить внимание: это поиск не по документам, а по строкам из базы данных