Э-э, нет, не ломается.
Скажем, у меня есть два документа: «козлиная ласка» и «суслик сыра». Если бы мы фактически представляли их как векторы, они могли бы выглядеть примерно так:
A [1,1,0,0]
Б [0,0,1,1]
и если мы разместили эти векторы в индексном файле, да, у нас возникнет проблема, когда придет время добавить новый термин. Но хитрость в том, что этот вектор никогда не существует . Ключом является инвертированный индекс .
Что касается новых терминов, не влияющих на косинус, это может быть правдой, в зависимости от того, что вы имеете в виду. Если я буду искать в моем корпусе (A, B) запрос «marmoset kungfu», то в корпусе не будет ни marmoset, ни kungfu. Таким образом, вектор, представляющий мой запрос, будет ортогональным ко всем документам в коллекции и получит плохую оценку сходства косинусов. Но, учитывая, что ни одно из терминов не совпадает, это кажется довольно разумным.