gpt4 book ai didi

java - 使用 Lucene 建立索引时如何将 JSON 对象视为单独的文档

转载 作者:行者123 更新时间:2023-12-02 10:17:12 28 4
gpt4 key购买 nike

我有一些 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);
}
}

最佳答案

不,这与 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 等。

关于java - 使用 Lucene 建立索引时如何将 JSON 对象视为单独的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54600396/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com