Как обрабатывать объекты JSON как отдельные документы при индексации с помощью Lucene - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть несколько файлов JSON, которые выглядят так, как показано ниже.Я хочу обрабатывать каждый объект JSON в каждом файле как один документ (с уникальным идентификатором «user_id»).Мой код обрабатывает весь файл JSON как один документ.Как я могу это исправить?

[
{
"user_id": "john_doeee",
"lon": 204.0,
"lat": 101.0,
"stored" : true,
"hashtag" : "ucriverside"
},
{
"user_id": "carlos_baby",
"lon": 204.0,
"lat": 101.0,
"stored" : true,
"hashtag" : "UCR"
},
{
"user_id": "emmanuel_",
"lon": 204.0,
"lat": 101.0,
"stored" : false,
"hashtag": "riverside"
}
]

Я думаю, это как-то связано с методом Document?Вот что у меня есть:

static void indexDoc(IndexWriter writer, Path file, long lastModified) throws IOException
{
try (InputStream stream = Files.newInputStream(file))
{
     //Create lucene Document
     Document doc = new Document();

     doc.add(new StringField("path", file.toString(), Field.Store.YES));
     doc.add(new LongPoint("modified", lastModified));
     doc.add(new TextField("contents", new String(Files.readAllBytes(file)), Store.YES));

     writer.updateDocument(new Term("path", file.toString()), doc);
}
}

1 Ответ

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

Нет, это не имеет ничего общего с методом Document.У Lucene нет стандартных способов понять, что это файл JSON, и его следует разделить на несколько документов Lucene.Вам нужно сделать это самостоятельно, используя библиотеку Java JSON.

Одной из многих возможностей может быть использование библиотеки https://github.com/stleary/JSON-java с кодом, подобным следующему:

JSONArray arr = new JSONArray(" .... ");
for (int i = 0; i < arr.length(); i++) {
    String text = arr.getJSONObject(i);
    doc.add(new TextField("contents", text), Store.YES));
}

Конечно, вы можете использовать любые другие библиотеки JSON, такие как Jackson, GSON и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...