Индексируйте несколько файлов в Solr одним запросом и добавляйте поля для каждого файла - PullRequest
0 голосов
/ 20 июня 2019

В качестве лучшей практики я пытаюсь индексировать пачку документов в Solr за один запрос, а не индексировать по одному. Теперь у меня проблема с тем, что индексируемые файлы имеют разные типы (pdf, word document, text file, ...) и поэтому имеют разные метаданные, которые извлекаются из 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);
      }
   }
}

1 Ответ

1 голос
/ 20 июня 2019

Насколько я знаю, невозможно отправить несколько файлов в одном запросе.Эти запросы обычно настолько тяжелы при обработке, что уменьшение количества HTTP-запросов может не сильно изменить общее время обработки.

Если вы хотите ускорить его, вы можете обработать все ваши файлы локально сСначала Tika (Tika также используется внутри Solr), затем только отправьте извлеченные данные.Таким образом, вы можете выполнить многопоточность процесса извлечения, добавить результаты в очередь и позволить процессу отправки Solr по мере роста очереди - со всем содержимым, передаваемым в Solr несколькими большими пакетами (например, 1000 документов за раз).

Это также позволяет вам масштабировать процесс индексирования, не добавляя больше серверов Solr, чтобы ускорить выполнение этой части процесса (если ваш узел Solr может справляться с поисковым трафиком, масштабировать его не нужно)это просто для обработки документов).

Использование Tika вручную также упрощает исправление или изменение деталей при обработке, таких как форматы файлов, возвращающие даты в разных часовых поясах и т. д., чем вы ожидаете.

...