получите подобие косинуса между двумя документами в lucene

Насколько я знаю, Perl не оптимизирует рекурсивные вызовы хвоста, но можно фальсифицировать его.

sub f{
  my($l,$r) = @_;

  if( $l >= $r ){
    return $l;
  } else {

    # return f( $l+1, $r );

    @_ = ( $l+1, $r );
    goto &f;

  }
}

, Когда сначала названный им выделит место на стеке. Тогда это изменит свои аргументы и перезапустит подпрограмму, не добавляя ничего больше к стеку. Это поэтому притворится, что никогда не называло сам, изменяя его в итеративный процесс.

Примечание, что нет никакой" my @_;" или" local @_;", если Вы, это больше не будет работать.

15
задан amadib 14 July 2011 в 22:32
поделиться

1 ответ

При индексировании есть возможность сохранять векторы частотности терминов.

Во время выполнения найдите векторы частотности терминов для обоих документов с помощью IndexReader.getTermFreqVector () и найдите данные частоты документов для каждого термина с помощью IndexReader.docFreq (). Это даст вам все компоненты, необходимые для вычисления косинусного сходства между двумя документами.

Более простой способ - отправить документ A в виде запроса (добавив все слова в запрос как термины ИЛИ, увеличивая частоту каждого термина) и найдите в наборе результатов документ B.

13
ответ дан 1 December 2019 в 01:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: