В качестве наилучшей практики я пытаюсь индексировать кучу документов в Solr одним запросом, а не индексировать по одному. Теперь у меня проблема с тем, что файлы, которые я индексирую, имеют разные типы (pdf, текстовый документ, текстовый файл и т. д.) и, следовательно, имеют разные метаданные, которые извлекаются из Tika и индексируются. Я хотел бы иметь определенные поля/информацию для всех файлов, независимо от типа, таких как создатель, дата создания и путь, например, но я не знаю, как вручную добавлять поля, когда я индексирую все файлы сразу. Если бы я индексировал один файл за раз, я мог бы просто добавить поля с помощью request.setParam(), но это для всего запроса, а не для одного файла. И даже если что-то подобное возможно, как бы я получил информацию, как создатель файла в Java?
Есть ли возможность добавлять поля для каждого файла?
if (listOfFiles != null) {
for (File file : listOfFiles) {
if (file.isFile()) {
request.addFile(file, getContentType(file));
//add field only for this file?
}else{
//Folder, call the same method again -> recursion
request = addFilesToRequest(file, request);
}
}
}
Насколько я знаю, нет возможности отправить несколько файлов в одном и том же запросе. Эти запросы обычно настолько тяжелы для обработки, что уменьшение количества HTTP-запросов может не сильно изменить общее время обработки.
Если вы хотите ускорить его, вы можете сначала обработайте все ваши файлы локально с помощью Tika (Tika — это то, что также используется внутри Solr), а затем отправлять только извлеченные данные. Таким образом, вы можете выполнять многопоточный процесс извлечения, добавлять результаты в очередь и позволять процессу отправки Solr выполняться по мере роста очереди — при этом весь контент отправляется в Solr несколькими большими пакетами (например, 1000 документов за раз).
Это также позволяет вам масштабировать процесс индексации без необходимости добавлять дополнительные серверы Solr, чтобы ускорить эту часть процесса (если ваш узел Solr может идти в ногу с поисковым трафиком, нет необходимости масштабировать его только для обработки документов). ).
Использование Tika вручную также упрощает исправление или изменение деталей во время обработки, таких как форматы файлов, возвращающие даты в разных часовых поясах и т. д., чем вы ожидаете.