Я пытаюсь получить все термины и связанные сообщения, которые вызывали Terms
из поля документа Lucene (например, как рассчитать частоту терминов в Lucene?). Согласно документации есть способ сделать это:
public final Terms getTermVector(int docID, String field) throws IOException
Получить вектор терминов для этого документа и поля или значение null, если векторы терминов не были проиндексированы. Возвращенный экземпляр Fields действует как инвертированный индекс для одного документа (docID будет 0).
Есть поле под названием int docID
. Что это?? для данного документа, что это за поле id и как Lucene это распознает? Согласно документации Lucene, я использовал StringField
в качестве идентификатора, а это не int
.
import org.apache.lucene.document.*;
Document doc = new Document();
Field idField = new StringField("id",post.Id,Field.Store.YES);
Field bodyField = new TextField("body", post.Body, Field.Store.YES);
doc.add(idField);
doc.add(bodyField);
Соответственно, у меня пять вопросов:
- Как Lucene распознает, что поле
id
используется какdocId
в этом документе? или даже Люцен это делает или нет ??? - Я использовал
String
для id, но этот метод даетint
. Это вызывает проблемы? - Есть ли подходящий способ получения сообщений?
- Я использовал
TextField
. Есть ли способ получить вектор терминов (Terms
) этого поля? Я не хочу повторно индексировать мой документ, как описано в здесь, потому что он великоват (35 гб). - Есть ли способ получить количество терминов и частоту каждого термина из
TextField
?