Помимо ответов на вопросы OP, позвольте мне рассказать о Apache Solr из простое введение в подробная установка и осуществление .
Простое введение
Любой, кто имел опыт работы с поисковыми системами выше, или другой
двигателей нет в списке - хотелось бы услышать ваше мнение.
Solr не следует использовать для решения задач в реальном времени. Для поисковых систем Solr в значительной степени игра и работает без нареканий .
Solr отлично работает в веб-приложениях с высоким трафиком ( Я где-то читал, что это не подходит для этого, но я поддерживаю это утверждение ). Он использует оперативную память, а не процессор.
- релевантность и рейтинг результата
boost помогает вам ранжировать ваши результаты, отображаемые сверху. Скажем, вы пытаетесь найти имя Джон в полях имя и фамилия , и вы хотите присвоить имя поле, то вам нужно повысить вверх имя поле, как показано.
http://localhost:8983/solr/collection1/select?q=firstname:john^2&lastname:john
Как видите, имя поле равно усилено вверх со счетом 2.
Подробнее о SolrRelevancy
- скорость поиска и индексирования
Скорость невероятно высока и без компромиссов. Причина, по которой я перешел на Solr .
Что касается скорости индексации, Solr также может обрабатывать JOINS из таблиц вашей базы данных. Более высокий и сложный JOIN влияет на скорость индексации. Однако огромная конфигурация RAM может легко справиться с этой ситуацией.
Чем выше объем ОЗУ, тем выше скорость индексации Solr.
- простота использования и простота интеграции с Django
Никогда не пытался интегрировать Solr и Django , однако вы можете добиться этого с помощью Haystack . Я нашел кое-что интересное статью , и вот для него github .
- требования к ресурсам - сайт будет размещен на VPS, поэтому в идеале поисковой системе не потребуется много оперативной памяти и процессора
Solr размножается в ОЗУ, поэтому, если ОЗУ велико, вам не нужно беспокоиться о Solr .
Solr Использование ОЗУ возрастает при полной индексации, если у вас есть несколько миллиардов записей, вы можете разумно использовать импорт Delta для решения этой ситуации. Как было объяснено, Solr - это только решение, близкое к реальному времени .
Solr отлично масштабируется. Посмотрите на SolrCloud .
Некоторые ключевые особенности этого.
- Осколки (или разделение - это концепция распределения индекса по нескольким машинам, например, если ваш индекс слишком велик)
- Балансировка нагрузки (если Solrj используется с облаком Solr, он автоматически выполняет балансировку нагрузки с помощью механизма Round-Robin)
- Распределенный поиск
- Высокая доступность
- дополнительные функции, такие как «Вы имели в виду?», Похожие запросы и т. Д.
Для описанного выше сценария вы можете использовать SpellCheckComponent , который упакован с Solr . Существует множество других функций. SnowballPorterFilterFactory помогает получать записи, например, если вы набрали, книг вместо книги , вам будут представлены результаты, связанные с книга .
В этом ответе широко рассматривается Apache Solr & MySQL . Джанго выходит за рамки.
Предполагая, что вы находитесь в среде LINUX, вы можете перейти к этой статье дальше. (у меня была версия Ubuntu 14.04)
Подробная установка
Начало работы
Скачать Apache Solr с здесь . Это будет версия 4.8.1 . Вы можете скачать новые версии, я нашел эту стабильную.
После загрузки архива распакуйте его в папку по вашему выбору.
Скажи .. Downloads
или еще как-то .. Так это будет выглядеть Downloads/solr-4.8.1/
По вашему запросу. Перейдите в каталог
shankar@shankar-lenovo: cd Downloads/solr-4.8.1
Так что теперь вы здесь ..
shankar@shankar-lenovo: ~/Downloads/solr-4.8.1$
Запустите сервер приложений Jetty
Jetty находится в папке примеров в каталоге solr-4.8.1
, поэтому перейдите в нее и запустите сервер приложений Jetty.
shankar@shankar-lenovo:~/Downloads/solr-4.8.1/example$ java -jar start.jar
Теперь не закрывайте терминал, сверните его и оставьте в стороне.
(СОВЕТ: используйте & после start.jar, чтобы Jetty Server работал в
фон)
Чтобы проверить, работает ли Apache Solr , перейдите по этой ссылке в браузере. http://localhost:8983/solr
Запуск Jetty на пользовательском порту
Он работает на порту 8983 по умолчанию. Вы можете изменить порт здесь или непосредственно в файле jetty.xml
.
java -Djetty.port=9091 -jar start.jar
Скачать JConnector
Этот файл JAR действует как мост между MySQL и JDBC. Загрузите независимую от платформы версию здесь
После загрузки извлеките папку, скопируйте mysql-connector-java-5.1.31-bin.jar
и вставьте ее в каталог lib .
shankar@shankar-lenovo:~/Downloads/solr-4.8.1/contrib/dataimporthandler/lib
Создание таблицы MySQL для связи с Apache Solr
Чтобы использовать Solr , вам нужно иметь несколько таблиц и данных для поиска. Для этого мы будем использовать MySQL для создания таблицы и отправки некоторых случайных имен, а затем мы можем использовать Solr для подключения к MySQL и индексировать эту таблицу, и это записи.
1. Структура таблицы
CREATE TABLE test_solr_mysql
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(45) NULL,
created TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
2. Заполните приведенную выше таблицу
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jean');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jack');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jason');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Vego');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Grunt');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jasper');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Fred');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jenna');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Rebecca');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Roland');
Проникнуть внутрь ядра и добавить директивы lib
1. Перейдите к
shankar@shankar-lenovo: ~/Downloads/solr-4.8.1/example/solr/collection1/conf
2. Модификация solrconfig.xml
Добавьте эти две директивы в этот файл ..
<lib dir="../../../contrib/dataimporthandler/lib/" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-dataimporthandler-\d.*\.jar" />
Теперь добавьте DIH (обработчик импорта данных)
<requestHandler name="/dataimport"
class="org.apache.solr.handler.dataimport.DataImportHandler" >
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
</requestHandler>
3.Создать файл db-data-config.xml
Если файл существует, тогда игнорируйте, добавьте эти строки в этот файл. Как видно из первой строки, вам необходимо предоставить учетные данные вашей MySQL базы данных. Имя базы данных, имя пользователя и пароль.
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/yourdbname" user="dbuser" password="dbpass"/>
<document>
<entity name="test_solr" query="select CONCAT('test_solr-',id) as rid,name from test_solr_mysql WHERE '${dataimporter.request.clean}' != 'false'
OR `created` > '${dataimporter.last_index_time}'" >
<field name="id" column="rid" />
<field name="solr_name" column="name" />
</entity>
</document>
</dataConfig>
(СОВЕТ: Вы можете иметь любое количество объектов, но следите за полем идентификатора,
если они совпадают, то индексирование будет пропущено. )
4. Изменить файл schema.xml
Добавьте это в schema.xml , как показано ..
<uniqueKey>id</uniqueKey>
<field name="solr_name" type="string" indexed="true" stored="true" />
Осуществление
Индексация
Вот где настоящая сделка. Для использования запросов Solr необходимо выполнить индексацию данных от MySQL до Solr .
Шаг 1. Перейдите в админ-панель Solr
Нажмите URL-адрес http://localhost:8983/solr в своем браузере. Экран открывается так.
Как указывает маркер, перейдите к Регистрация , чтобы проверить, не привела ли какая-либо из вышеуказанных конфигураций к ошибкам.
Шаг 2: Проверьте свои журналы
Хорошо, теперь вы здесь, так как вы можете получить много желтых сообщений (ПРЕДУПРЕЖДЕНИЯ). Убедитесь, что у вас нет сообщений об ошибках, отмеченных красным. Ранее в нашей конфигурации мы добавили запрос select в наш db-data-config.xml , скажем, если бы в этом запросе были какие-либо ошибки, он бы появился здесь.
Хорошо, без ошибок. Мы в порядке. Давайте выберем collection1 из списка, как изображено, и выберите Dataimport
Шаг 3: DIH (обработчик импорта данных)
Используя DIH, вы будете подключаться к MySQL из Solr через файл конфигурации db-data-config.xml из Solr интерфейс и получить 10 записей из базы данных, которая индексируется на Solr .
Для этого выберите полный импорт и отметьте опции Очистить и Подтвердить . Теперь нажмите Выполнить , как показано.
В качестве альтернативы вы можете использовать прямой запрос full-import , подобный этому ..
http://localhost:8983/solr/collection1/dataimport?command=full-import&commit=true
После того, как вы нажали Выполнить , Solr начнет индексировать записи, если были какие-либо ошибки, было бы написано Ошибка индексации и вам нужно вернуться назад в раздел Ведение журнала , чтобы увидеть, что пошло не так.
Если в этой конфигурации нет ошибок и если индексирование успешно завершено, вы получите это уведомление.
Шаг 4: Выполнение запросов Solr
Похоже, что все прошло хорошо, теперь вы можете использовать Solr Запросы для запроса данных, которые были проиндексированы. Нажмите Запрос слева и затем нажмите Выполнить кнопку внизу.
Вы увидите проиндексированные записи, как показано.
Соответствующий запрос Solr для перечисления всех записей:
http://localhost:8983/solr/collection1/select?q=*:*&wt=json&indent=true
Ну, все 10 проиндексированных записей. Скажем, нам нужны только имена, начинающиеся с Ja , в этом случае вам нужно указать имя столбца solr_name
, следовательно, ваш запрос выглядит следующим образом.
http://localhost:8983/solr/collection1/select?q=solr_name:Ja*&wt=json&indent=true
Вот как вы пишете Solr Запросы. Чтобы узнать больше об этом, проверьте эту прекрасную статью .