SOLR установка и настройка

Solr —программное обеспечение для поиска на сайте. Это поисковый индексатор и хранилище данных с богатым функционалом,в индекс для Solr помещаются документы целиком, а не только метаданные как для ряда аналогов.

Рассмотрим установку и настройку пакета на примере Debian 8.

Установка SOLR и базовая настройка пакета на Debian

apt-get -y install openjdk-7-jdk

Создадим каталог под файлы java

mkdir /opt/java

Далее — симовльную ссылку /opt/java/default к библиотеке /usr/lib/jvm/java-7-openjdk-amd64

ln -s /usr/lib/jvm/java-7-openjdk-amd64 /opt/java/default

Слоздаем каталог под файлы пакета и переходим в него

mkdir /opt/solr

cd /opt/solr

Скачиваем исходники Solr

wget http://download.nextag.com/apache/lucene/solr/5.5.5/solr-5.5.5.tgz

Разархивируем

tar -zxvf solr-5.5.5.tgz

Затем переходим в каталог solr-5.5.5, при установке пакета создаются тестовые  файлы, которые можно использовать

В каталоге с файлами пакета будет README.txt, в котором содержится довольно полная информация по его использованию.

В частности, имеются инструкции по работе с примерами

bin/solr -e <EXAMPLE> where <EXAMPLE> is one of:

cloud : SolrCloud example
dih : Data Import Handler (rdbms, mail, rss, tika)
schemaless : Schema-less example (schema is inferred from data during indexing)
techproducts : Kitchen sink example providing comprehensive examples of Solr features

cd /opt/solr/solr-5.5.5

bin/solr -e techproducts

Creating Solr home directory /opt/solr/solr-5.5.5/example/techproducts/solr

Starting up Solr on port 8983 using command:
bin/solr start -p 8983 -s «example/techproducts/solr»

WARNING: Java version 1.7.0_151 has known bugs with Lucene and requires the -XX:-UseSuperWord flag. Please consider upgrading your JVM.

NOTE: Please install lsof as this script needs it to determine if Solr is listening on port 8983.

Started Solr server on port 8983 (pid=8433). Happy searching!

Copying configuration to new core instance directory:
/opt/solr/solr-5.5.5/example/techproducts/solr/techproducts

Creating new core 'techproducts' using command:
http://localhost:8983/solr/admin/cores?action=CREATE&name=techproducts&instanceDir=techproducts

{
«responseHeader»:{
«status»:0,
«QTime»:3353},
«core»:»techproducts»}

Indexing tech product example docs from /opt/solr/solr-5.5.5/example/exampledocs
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/solr/techproducts/update using content-type application/xml…
POSTing file mem.xml to [base]
POSTing file mp500.xml to [base]
POSTing file ipod_video.xml to [base]
POSTing file manufacturers.xml to [base]
POSTing file gb18030-example.xml to [base]
POSTing file vidcard.xml to [base]
POSTing file monitor.xml to [base]
POSTing file monitor2.xml to [base]

POSTing file utf8-example.xml to [base]
POSTing file solr.xml to [base]
POSTing file hd.xml to [base]
POSTing file ipod_other.xml to [base]
POSTing file money.xml to [base]
POSTing file sd500.xml to [base]
14 files indexed.
COMMITting Solr index changes to http://localhost:8983/solr/techproducts/update…
Time spent: 0:00:00.634

Solr techproducts example launched successfully. Direct your Web browser to http://localhost:8983/solr to visit the Solr Admin UI

Solr уcтановлен и доступен в веб-интерфейсе

В браузере теперь потребуется ввести IP адрес сервера, номер порта, /solr

http://123.123.123.123:8983/solr

установка solr
Дополнительной настройка веб-сервера и его виртуальных хостов не требуется.

Статус ноды можно посмотреть следующим образом:

bin/solr status

Found 1 Solr nodes:

Solr process 8433 running on port 8983
{
«solr_home»:»/opt/solr/solr-5.5.5/example/techproducts/solr»,
«version»:»5.5.5 b3441673c21c83762035dc21d3827ad16aa17b68 — sarowe — 2017-10-20 09:02:42",
«startTime»:»2017-11-18T17:24:17.602Z»,
«uptime»:»0 days, 0 hours, 10 minutes, 54 seconds»,
«memory»:»43.1 MB (%8.8) of 490.7 MB»}

Если  сервер требуется остановить это можно сделать так:

bin/solr stop

Пакет позволяет искать данные в XML файлах. Для примера доступны некоторые образцы, увидеть их можно в example/exampledocs/

ls example/exampledocs/

less example/exampledocs/money.xml

<add>
<doc>
<field name=»id»>USD</field>
<field name=»name»>One Dollar</field>
<field name=»manu»>Bank of America</field>
<field name=»manu_id_s»>boa</field>

В том же каталоге находится post.jar, с помощью которого в индекс добавляются данные

java -Dc=techproducts -jar example/exampledocs/post.jar example/exampledocs/money.xml

SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/solr/techproducts/update using content-type application/xml…
POSTing file money.xml to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/solr/techproducts/update…
Time spent: 0:00:00.141

Также добавим еще один документ:

java -Dc=techproducts -jar example/exampledocs/post.jar example/exampledocs/solr.xml

Данные в Solr можно добавлять двумя способами:

  1. HTTP
  2. Нативный клиент

Поиск в Solr посредством HTTP запросов

Поисковые запросы можно отправлять по HTTP:

http://123.123.123.123:8983/solr/techproducts/select?q=solr&wt=json

Результат в браузере будет выглядеть следующим образом:

{«responseHeader»:{«status»:0,»QTime»:2,»params»:{«q»:»solr»,»wt»:»json»}},

            «response»:{

                      «numFound»:1,

                      «start»:0,

                       «docs»:[{«id»:»SOLR1000",

                        «name»:»Solr, the Enterprise Search Server»,

                         «manu»:»Apache Software Foundation»,

                         «cat»:[«software»,»search»],

                                           «features»:[

                                                         «Advanced Full-Text Search Capabilities using Lucene»,

                                                         «Optimized for High Volume Web Traffic»,

                                                         «Standards Based Open Interfaces — XML and HTTP»,

                                                         «Comprehensive HTML Administration Interfaces»,

                                                         «Scalability — Efficient Replication to other Solr Search Servers»,

                                                         «Flexible and Adaptable with XML configuration and Schema»,

                                                         «Good unicode support: héllo (hello with an accent over the e)»],

                                                         «price»:0.0,»price_c»:»0.0,USD»,

                                                         «popularity»:10,

                                                         «inStock»:true,»incubationdate_dt»:»2006-01-17T00:00:00Z»,

                                                         «_version_»:1584428112760799232}]}}

http://123.123.123.123:8983/solr/techproducts/select?q=popularity:10&wt=json&fl=cat,name

{«responseHeader»:{

                      «status»:0,»QTime»:5,

                      «params»:{

                             «fl»:»cat,name»,

                              «q»:»popularity:10",

                               «wt»:»json»}},

                                           «response»:{«numFound»:2,»start»:0,»

                                                     docs»:[{«name»:»Apple 60 GB iPod with Video Playback Black», «cat»:[«electronics»,»music»]},

                                                                  {«name»:»Solr, the Enterprise Search Server»,»cat»:[«software»,»search»]}]}}

Как можно видеть имеем 2 результата, удовлетворяющих запросу (популярность — 10 ): продукт компании Apple и непосредственно программынй пакет для поиска Solr. Один из результатов нашелся в добавленном в индекс money.xml, другой в solr.xml

Создание индексов Solr и добавление данных в них

Можно создать новый индекс и добавить необходимую информацию, индекс создается так (index не ключевое слово, а просто имя):

bin/solr create -c index

Copying configuration to new core instance directory:
/opt/solr/solr-5.5.5/example/techproducts/solr/index

Creating new core 'index' using command:
http://localhost:8983/solr/admin/cores?action=CREATE&name=index&instanceDir=index

{
«responseHeader»:{
«status»:0,
«QTime»:1584},
«core»:»index»}

По созданным индексам и производится поиск.

Используя curl легко добавлять документы в созданный индекс (обращение к localhost производится только с того же сервера, на котором установлен Solr)

 curl http://localhost:8983/solr/index/update -d '
[
{«id» : «12»,
«title» : «Search Softwarer for large projects»,
«author» : «Admin»
}
]'

{«responseHeader»:{«status»:0,»QTime»:121}}

К имени полей можно добавлять _t, если ключ использован становится возможен полнотекстовый поиск. Например, author_t

Запускам перестроение индекса (сделать это можно в том числе обращаясь с другого сервера по белому IP адресу)

curl http://123.123.123.123:8983/solr/index/update?commit=true

Как только это сделано — можно искать информацию по индексу

curl http://123.123.123.123:8983/solr/index/get?author=Admin

Solr хорош и тем, что может эффективно находить данные по неточным запросам. В больших проектах сервера с Solr объединяются в кластерные структуры, при больших нагрузках пакет дает значительно лучшую производительность, чем аналоги.