Если пары объектов, которые вы хотите сравнить, уже указаны заранее, и вас интересуют парные оценки, я не думаю, что Lucene даст вам какое-либо преимущество. Просто найдите векторы в некотором хранилище значений ключей и вычислите сходство. Рассмотрите возможность использования разреженного векторного представления для эффективности пространства и времени.
Если заранее указана только одна сущность, и вас больше интересует сценарий, подобный ранжированию, возможно, стоит попробовать Lucene.
Правильное место для просмотра будет
org.apache.lucene.search.Similarity
вы должны быть в состоянии адаптировать его к вашим потребностям и установить вашу версию по умолчанию с помощью
setDefault(Similarity similarity)
Однако я был бы осторожен с ожиданиями увеличения скорости (с повторением всех), поскольку они в значительной степени зависят от разреженности (запроса) и функции оценки, которую вы выбираете для реализации. Также обратите внимание, что Lucene использует двухэтапную схему извлечения, сначала логическое значение («все условия AND содержали? Какие-либо из условий OR?»), А затем оценивается, что проходит. В то время как для tf.idf вы ничего не потеряете на пути к другим функциям скоринга, которые вы могли бы.
Для более общих подходов для эффективного приближенного поиска ближайшего соседа, возможно, стоит взглянуть на LSH:
http://en.wikipedia.org/wiki/Locality-sensitive_hashing