В целом, индексирование - это систематизация документов или других сущностей. Индексация выполняется для увеличения скорости и производительности поискового запроса при поиске необходимого документа, поэтому это позволяет пользователям очень быстро находит информацию в документе. В Apache Solr мы можем индексировать (добавлять, удалять, изменять) различные форматы документов, такие как xml, csv, pdf и т.д. Добалять данные в индекс Solr можно несколькими способами: используя веб интерфейс Solr, используя любого из клиентских API, таких как Java, используя post tool, а также при помощи расширения php Solr. Все эти варианты будут рассмотрены в данной статье. Итак, начнем.
Для начала необходимо создать коллекцию (как запустить солр описано в другой статье). Для этого заходим в админ панель, переходим во вкладку Core Admin и нажимаем Add Core
После этого переходим в директорию сервера Solr, далее в server\solr\configsets\_default и копируем папку conf с конфигурацией коллекции по умолчанию. Далее переходим в директорию server\solr и здесь создаем папку с название коллекции, для примера назовем articles. После создания заходим в нее и вставляем скопированные настройки. Теперь можно возвращаться в админку и нажимать Add Core для создания коллекции, прописав перед этим в полях name и instanceDir название новой коллекции, которое должно совпадать с названием созданной директории.
Коллекция у нас готова, приступаем к индексированию данных.
Индексирование документов при помощи 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 / Macsolr-8.1.0:$ bin/post -c techproducts example/exampledocs/monitor.xmlWindowsC:\solr-8.1.0> java -jar -Dc=techproducts -Dauto example\exampledocs\post.jar example\exampledocs\monitor.xmlВ результате увидим следующее:SimplePostTool version 5.0.0Posting 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,logPOSTing 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Для того чтобы убедиться что данные проиндексированы переходим во вкладку Query и нажимаем Execute Query с запросом *:* для того чтобы посмотреть все документы.Как видим данные успешно проиндексированы.Добавление документов с помощью веб интерфейса Solr
Индексировать документы можно также через веб интерфейс, предоставленный Solr. Давайте посмотрим, как добавить следующий документ JSON в индекс.{"id" : "001","name" : "Ram","age" : 53,"Designation" : "Manager","Location" : "Hyderabad",},{"id" : "002","name" : "Robert","age" : 43,"Designation" : "SR.Programmer","Location" : "Chennai",},{"id" : "003","name" : "Rahim","age" : 25,"Designation" : "JR.Programmer","Location" : "Delhi",}Для того чтобы проиндексировать данные через браузер переходим в админ панели во вкладку Documents и в поле Document(s) добавляем наш json документ (если же данные будут в другом формате, тогда в селекторе Document Type выбираем необходимый формат). Далее нажимаем Submit Document и видим что документы успешно добавлены в индекс.
Индексация при помощи расширения php Solr
Для того чтобы использовать этот вариант добавления документов необходимо установить расширение Solr в php. Как это сделать описано в документации php. Итак, напишем небольшой скрипт для индексирования одного документа с двумя полями.$options = ['hostname' => 'localhost','login' => 'admin','password' => '','port' => 8983,'path' => '/solr/articles'];$client = new SolrClient($options);$doc = new SolrInputDocument();$doc->addField('id', 334455);$doc->addField('cat', 'Software');$doc->addField('cat', 'Lucene');$updateResponse = $client->addDocument($doc);print_r($updateResponse->getResponse());Запустив скрипт в браузере увидим что индексация выполнена успешно.SolrObject Object ( [responseHeader] => SolrObject Object ( [status] => 0 [QTime] => 13 ) )Чтобы убедиться что документ добавлен в индекс перейдем в админ панель Solr для просмотра всех проиндексированных документов.На этом все! Solr умеет находить очень быстро информацию среди большого количества документов, поэтому это может намного ускорить загрузку страниц вашего сайта, или же результатов поиска в разы по сравнению с реляционными базами данных, поэтому все эти варианты добавления документов в индекс могут быть полезны при внедрение поискового сервера в ваших проектах.