gpt4 book ai didi

java - 使用 Solr 索引文件会阻塞文件

转载 作者:行者123 更新时间:2023-12-02 03:53:59 25 4
gpt4 key购买 nike

我正在使用 SolrJ 索引文件(pdf、docx 等),之后我想向文件目录添加一个监听器以检查更改。问题是,在我对文件建立索引后(似乎工作正常),我无法删除或移动任何文件。

我正在 Azure Function(微服务)上运行代码。

将所有文件添加到一个请求然后将该请求发送到 Solr 或仅为每个文件发送一个请求之间似乎存在差异。批量发送所有文件似乎在大多数情况下都有效,之后我可以删除并移动本地文件,但是当我为每个文件发送一个请求时,总是会出现问题。

此代码大部分时间都有效:

public String indexFiles(String folderPath) throws IOException, SolrServerException, NullPointerException {
File folder = new File(folderPath);
ContentStreamUpdateRequest request = new ContentStreamUpdateRequest("/update/extract");
request = addFilesToRequest(folder, request);
NamedList resp = client.request(request);
client.commit();
return resp.toString();
}

private ContentStreamUpdateRequest addFilesToRequest(final File folder, ContentStreamUpdateRequest request) throws IOException{
File[] listOfFiles = folder.listFiles();
if(listOfFiles != null) {
for (File file : listOfFiles) {
if (file.isFile()) {
System.out.println("file is: " + file.getName());
request.addFile(file, getContentType(file));
}else{
request = addFilesToRequest(file, request);
}
}
}
return request;
}

虽然此代码似乎总是阻止文件:

public void indexFiles(String folderPath) throws IOException, SolrServerException, NullPointerException {
File folder = new File(folderPath);
System.out.println("Starting indexing.");
addFilesToSolr(folder);
System.out.println("add files to Solr done.");
}

private void addFilesToSolr(final File folder) throws IOException, SolrServerException, NullPointerException{
File[] listOfFiles = folder.listFiles();
if(listOfFiles != null) {
for (File file : listOfFiles) {
if (file.isFile()) {
ContentStreamUpdateRequest request = new ContentStreamUpdateRequest("/update/extract");
System.out.println("file is: " + file.getName());
request.addFile(file, getContentType(file));
System.out.println("Sending request ...");
NamedList response = client.request(request);
System.out.println("Request send. Response is: " + response);
UpdateResponse resp = client.commit();
System.out.println("Committed. Response is: " + resp.getResponse().toString());
} else if (file.isDirectory()) {
addFilesToSolr(file);
}
}
}
System.out.println("Requests for all files created. End of method.");
}

最佳答案

如果其他人遇到此问题,请查看以下内容:Files locked after indexing显然这是 SolrJ 库中的一个错误,文件流没有正确关闭。该错误显然已修复,但问题仍然存在,因此链接中有一个解决方法可以为我解决该问题。

关于java - 使用 Solr 索引文件会阻塞文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56761427/

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