Получите частотности термина в Lucene

Filter - полезная функция для такого рода вещей

' build a test string
dim a(4), i
for i = 0 to 4
    if i mod 2 = 1 then
        a(i) = "Subtot " & (i + 1)
    else
        a(i) = "Something else"
    end if
next

WScript.Echo Join(a, vbNewLine)

'reduce the array to a subset that just contains "subtot"
dim b: b = Filter(a, "subtot", true, vbTextCompare)
' use the last item in the array
i = UBound(b)
WScript.Echo b(i)

Выходы

Что-то еще
Подтотон 2
Что-то еще
Подраздел 4
Что-то еще

Подтотон 4

blockquote>

6
задан erickson 21 March 2009 в 04:59
поделиться

2 ответа

Использовать TermDocs получить частотность термина для данного документа. Как частота документа, Вы получаете термин документы от IndexReader, использование условия начисления процентов.


Вы не найдете более быстрый метод, чем TermDocs не теряя некоторую общность. TermDocs чтения непосредственно из ".frq" файла в индексном сегменте, где каждая частотность термина перечислена в порядке документа.

Если это "слишком медленно", удостоверяются, что Вы оптимизировали свой индекс для слияния нескольких сегментов в единственный сегмент. Выполните итерации по документам в порядке (пропуски в порядке, но Вы не можете перейти назад и вперед в списке документов эффективно).

Ваш следующий шаг мог бы быть дополнительной обработкой для создания еще более специализированной файловой структуры, которая не учитывает SkipData. Лично я искал бы лучший алгоритм, чтобы достигнуть моей цели или обеспечить лучшие аппаратные средства — большая память, любой для содержания a RAMDirectory, или дать ОС для использования в ее собственной системе кэширования файлов.

8
ответ дан 9 December 2019 в 22:40
поделиться

TermDocs дает TF данного термина в каждом документе, который содержит термин. Можно получить DF путем итерации через каждого <документа, частота> пара и подсчета количества пар, хотя TermEnums должен быть быстрее. IndexReader имеет termDocs (Термин) метод, который возвращает TermDocs для данного Термина и индекса.

1
ответ дан 9 December 2019 в 22:40
поделиться
Другие вопросы по тегам:

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