Использование документа doc = новый документ ();в люцене? - PullRequest
0 голосов
/ 25 февраля 2019

Ниже приведен мой код.

Document doc = new Document();
String str = "Lucene in Action"; //first document
doc.add(new Field("title", newString,Field.Store.YES,Field.Index.ANALYZED));
writer.addDocument(doc);
System.out.println(doc.getFields());

Если мне нужно проиндексировать 1000 документов, мне нужно запустить приведенный выше код для этой 1000 документов, если да, то как мы можем запустить этот код в циклеЯ попытался создать массив типа Document, но он не позволяет мне это сделать.Как мне выйти из этой проблемы?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

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

Вы можете извлечь создание документа в метод:

// methods params should be everything you need every time you want to create a new document
// input param str is instead of this String str = "Lucene in Action";
// it's not used but I left it in case you need it
public Document createDocument(String str, 
                               String newString, 
                               Field.Store storeVal,
                               Field.Index indexVal) {
    final Document doc = new Document();
    // if you need to add many fields - you can do it here also
    // let's say having this in the loop as well
    doc.add(new Field("title", newString, storeVal, indexVal));
    return document;
}

Теперьесли вам это нужно несколько раз, вы можете попробовать что-то вроде этого:

for (int i=0; i < 1000; i++) {
    final Document doc = createDocument(<!-- pass some args here -->);
    writer.addDocument(doc);
    System.out.println(doc.getFields()); // just am example. does not mean you need it :) 
}

Надеюсь, что это как-то полезно.

Счастливого взлома :)

0 голосов
/ 25 февраля 2019

Вы можете создать документ и добавить поле к нему один раз, а затем просто изменить значение этого поля перед записью документа в индекс

Document doc = new Document();
StringField stringField = new StringField(<your_name>, "", Field.Store.YES);
doc.add(stringField);

....

for (String value : <ListOfStrings>) {
    stringField.setStringValue(value);
    writer.addDocument(doc);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...