В целом, индексирование - это систематизация документов или других сущностей. Индексация выполняется для увеличения скорости и производительности поискового запроса при поиске необходимого документа, поэтому это позволяет пользователям очень быстро находит информацию в документе. В Apache Solr мы можем индексировать (добавлять, удалять, изменять) различные форматы документов, такие как xml, csv, pdf и т.д. Добалять данные в индекс Solr можно несколькими способами: используя веб интерфейс Solr, используя любого из клиентских API, таких как Java, используя post tool, а также при помощи расширения php Solr. Все эти варианты будут рассмотрены в данной статье. Итак, начнем.

Для начала необходимо создать коллекцию (как запустить солр описано в другой статье). Для этого заходим в админ панель, переходим во вкладку Core Admin и нажимаем Add Core
add core apache solr
После этого переходим в директорию сервера Solr, далее в server\solr\configsets\_default и копируем папку conf с конфигурацией коллекции по умолчанию. Далее переходим в директорию server\solr и здесь создаем папку с название коллекции, для примера назовем articles. После создания заходим в нее и вставляем скопированные настройки. Теперь можно возвращаться в админку и нажимать Add Core для создания коллекции, прописав перед этим в полях name и instanceDir название новой коллекции, которое должно совпадать с названием созданной директории.
create core apache solr
Коллекция у нас готова, приступаем к индексированию данных.

Индексирование документов при помощи Post команды

Solr включает bin/post инструмент для упрощения индексации различных типов документов. Используя эту команду вы можете индексировать различные форматы файлов, такие как JSON, XML, CSV. Данные которые мы будем индексировать находятся в example/exampledocs каталоге. Можно проиндексировать как отдельный файл, так и все файлы в данной директории сразу, указав *. Для примера проиндексируем файл monitor.xml c директории exampledocs со следующими данными:
<?xml version="1.0"?>
<add><doc>
  <field name="id">3007WFP</field>
  <field name="name">Dell Widescreen UltraSharp 3007WFP</field>
  <field name="manu">Dell, Inc.</field>
  <!-- Join -->
  <field name="manu_id_s">dell</field>
  <field name="cat">electronics and computer1</field>
  <field name="features">30" TFT active matrix LCD, 2560 x 1600, .25mm dot pitch, 700:1 contrast</field>
  <field name="includes">USB cable</field>
  <field name="weight">401.6</field>
  <field name="price">2199.0</field>
  <field name="popularity">6</field>
  <field name="inStock">true</field>
  <!-- Buffalo store -->
  <field name="store">43.17614,-90.57341</field>
</doc></add>
Пример:
Linux / Mac
solr-8.1.0:$ bin/post -c techproducts example/exampledocs/monitor.xml
Windows
C:\solr-8.1.0> java -jar -Dc=techproducts -Dauto example\exampledocs\post.jar example\exampledocs\monitor.xml
В результате увидим следующее:
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/solr/articles/update...
Entering auto mode. File endings considered are xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log
POSTing file monitor.xml (application/xml) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/solr/articles/update...
Time spent: 0:00:00.435