Как использовать Apache Solr

  Рет қаралды 13,457

GrabDuck!

GrabDuck!

Күн бұрын

Онлайн-курс:
1. Основы поисковых технологий
2. Булев поиск (boolean search)
3. Ранжирование результатов (ranking)
4. Обратный индекс (inverted index)
5. Индексация и поиск
6. Что такое Apache Solr
7. Как установить Apache Solr
8. Администрирование Solr
9. Типы запросов к Solr (query types) - демо
10. Solr и Java. Использование SolrJ API
11. Solr и Java. Демо сессия
Будем рады ответить на ваши вопросы!
Еще раз напомним, что посмотреть как работает поиск на базе Apache Solr можно на сайте нашего проекта grabduck.com
Подписывайтесь на наш канал!

Пікірлер: 31
@GrabDuck
@GrabDuck 4 жыл бұрын
Работа в IT Германия! Ищем сотрудника для работы в немецкой команде Backend developers! Java,Spring, web development Tech Slack: - Java - Spring Framework - Microservices - swagger / open API - kubernetes / docker - PostgreSQL Mongo DB - Pluspunkt: Camunda BPM, Solr Experience 4 years + desired This is a great opportunity to join a team with a modern and friendly culture. Sent your CV at info@econor.io Поддержка на первое время в Германии!
@andrey-nosov
@andrey-nosov 4 жыл бұрын
Спасибо, все по делу
@GrabDuck
@GrabDuck 4 жыл бұрын
Спасибо!
@s1must
@s1must 6 жыл бұрын
Спасибо! Видео уже 2,5 года, но все еще интересно :)
@maxfiredark9494
@maxfiredark9494 11 ай бұрын
7 лет...
@ВладиславБогер
@ВладиславБогер 3 жыл бұрын
Спасибо, хорошо объяснили, второго такого видео на русском не нашёл.
@zumratshukurova8671
@zumratshukurova8671 5 жыл бұрын
А как вы создаете ядро "фильм" и как данные записываются - не понятно
@ДмитрийП-ж5с
@ДмитрийП-ж5с 5 жыл бұрын
спасибо!
@andreikrasutski7470
@andreikrasutski7470 8 жыл бұрын
По видео я так и не понял, чем отличаются Q от FQ. Немного погуглил и вот, что я понял. Расскажу на примере: Есть два запроса: Q: _name:new AND genre:"Superhero movie"_ и Q: _name:new_ FQ: _genre:"Superhero movie"_ Результаты будут одинаковые, но отсортированы по-разному, а также время выполнения будет отличатся - второй выполнится быстрее. Таким образом, если использовать первый запрос, то _genre:"Superhero movie"_ с более высокой оценкой будут в верхней части ответа, а если использовать второй запрос, то оценка _genre:"Superhero movie"_ не учитывается и в ответе они могут быть в конце списка.
@GrabDuck
@GrabDuck 8 жыл бұрын
попробую уточнить. FQ переводиться как Filter Query. То есть по простому - фильтрация. Q - это поисковый запрос. Разница в следующем: 1) фильтры не используют токенизацию (тут могу ошибаться, но вроде так). На практике это означает что по фильтрам нельзя искать словоформы например, задать "красный" и найти все где есть красное, красные, красная и т.п. преобразования (стимминг, n-граммы,...) Т.е. с фильтрами возможен поиск только по полному соответствию. 2) запросы по фильтрам solr кеширует, по query нет. Это логично, поскольку в фильтры пихают обычно относительно стабильную информацию, типа категорий в eshop, которых конечное количество и имеет смысл это хранить в кеше. поэтому ваш запрос Q: name:new FQ: genre:"Superhero movie" выполняется быстрее, так как его часть с FQ закеширована 3) При сортировке FQ не участвует, только Q (stackoverflow.com/questions/8730898/solr-filter-query-vs-main-query). Поэтому она (сортировка) и разная для ваших случаев. Как работает сортировка по умолчанию (если упрощенно), критерием сортировки является то, как часто слова из запроса появляются в каждом документе и насколько слово само по себе редкое для документов. Соответственно в вашем примере Q: name:new AND genre:"Superhero movie" для сортировки используется "new Superhero movie", а во втором случае Q: name:new FQ: genre:"Superhero movie" используется только "new". поэтому и получаются разные результаты сортировки, при этом список документов один и тот же (что тоже кстати не всегда правда. если ваш Q проходит через какой нибудь стиминг, то и результаты будут разные) Надеюсь ответил :-)
@andreikrasutski7470
@andreikrasutski7470 8 жыл бұрын
Теперь нужно разобраться, что такое стимминг
@GrabDuck
@GrabDuck 8 жыл бұрын
стемминг / stemming ;-) но вообще это просто был пример, что если используете какие-то преобразования токенов, например стемминг, то результаты будут разными.
@АртемШарабанов
@АртемШарабанов 7 жыл бұрын
Почему ничего не сказано как настраивать индексирование? прежде чем писать запросы нужно что-то проиндексировать. Из видео непонятно как создать новый индекс.
@ThePjotar
@ThePjotar 3 жыл бұрын
Привет Артём!
@andreikrasutski7470
@andreikrasutski7470 8 жыл бұрын
Спасибо за видео! Подскажите, пожалуйста, как настроить многоязычный (Русский и Английский) поиск? Я добавил в *schema.xml* {code} ... {code} в папку lang добавил файл stopwords_ru.txt. Переиндексировал, но поиск так и не заработал
@GrabDuck
@GrabDuck 8 жыл бұрын
где вы используете fieldType text_ru? Ваше
@andreikrasutski7470
@andreikrasutski7470 8 жыл бұрын
Спасибо, разобрался, вместо type="string" нужно использовать type="text_ru". А как быть, если в одном поле встречается слова на русском и английском? Как настроить Solr, чтобы правильно проиндексировал все слова, с учетом всех языков в этом поле?
@GrabDuck
@GrabDuck 8 жыл бұрын
Единого, правильного ответа не существует. Зависит от того, что вам необходимо, что делаете, какие у вас данные и т.д. Попробуйте посмотреть здесь grabduck.com/s/bEem13bT или здесь grabduck.com/s/m9UT57WE
@andreikrasutski7470
@andreikrasutski7470 8 жыл бұрын
ок, спасибо за ссылки!
@andreikrasutski7470
@andreikrasutski7470 8 жыл бұрын
Вот интересное решение нашел на github. github.com/EHRI/ehri-search-tools/blob/4872817f169c13904783f839881eb4bbd3c684ba/solr-config/solr/portal/conf/schema.xml Автор описал типы: fieldType: text_en, text_ru, text_de и др. отдельные поля для конкретного языка: field: title_en, title_ru, title_de и др. Затем использовал копирование из одного поля в другое: Мне кажется такое решение - рациональное
@dmitriiengineer1235
@dmitriiengineer1235 7 жыл бұрын
Как запустить? Ввел закинул папку на локальный сервер, пишу в строке запроса localhost:8983/solr и ничего не происходит. Как вообще его устанавливать. Java установлена последняя
@rodrigezgarsea8648
@rodrigezgarsea8648 8 жыл бұрын
Как обновлять версии Solr без переиндексирования ?
@GrabDuck
@GrabDuck 7 жыл бұрын
Обычно ближайшие версии совместимы между собой. Поэтому если разрыв между версиями большой, то мигрируете по шагам: 1) Установить следующую версию Solr (v2) 2) Настроить ее на готовый индекс предыдущего Solr (v1). 3) После запуска проверить что работает и оптимизировать индекс - при этом Solr перепишет индексные файлы под свою текущую версию (которая будет теперь уже совместима с v3) 4) повторить в шага 1 тут есть обсуждение данного вопроса grabduck.com/s/VnYn6N1f
@spacioclub
@spacioclub 7 жыл бұрын
переход с 5й на 6. SOLR так не прокатит
@andreikrasutski7470
@andreikrasutski7470 8 жыл бұрын
В версии 6.1 класс *org.apache.solr.client.solrj.impl.HttpSolrClient* помечен как *Deprecated*. Необходимо использовать *HttpSolrClient.Builder*. SolrClient solr = new HttpSolrClient.Builder("localhost:8983/solr/films").build();
@GrabDuck
@GrabDuck 8 жыл бұрын
Да, наверно вы правы, не смотрел что там нового в 6.1. В видео используется Solr 6.0. Вообще это особенность Lucene, а в месте с ним и всех продуктов на нем (Solr, Elastic Search из наиболее известных), ребята с легкостью меняют свой API и что вчера было еще нормально, сегодня уже deprecated. Так что не удивлюсь, если еще через пол-года они поймут, то через builder задавать тоже не удобно и вернуться обратно на простой конструктор.
@andreikrasutski7470
@andreikrasutski7470 8 жыл бұрын
Согласен через builder неудобно, я не сразу понял как правило по новому
АngularJS на практике - Data binding
6:19
GrabDuck!
Рет қаралды 1,8 М.
Apache Lucene/Solr Internals (Anatoliy Sokolenko, Ukraine)
43:51
SLIDE #shortssprintbrasil
0:31
Natan por Aí
Рет қаралды 49 МЛН
How to have fun with a child 🤣 Food wrap frame! #shorts
0:21
BadaBOOM!
Рет қаралды 17 МЛН
Максим Гореликов - Дизайн реактивной системы на Spring 5/Reactor
58:03
JPoint, Joker и JUG ru — Java-конференции
Рет қаралды 45 М.
Введение в Apache Solr
47:36
Sparrows JTalks
Рет қаралды 2,7 М.
Apache Solr 8 - Getting Started Tutorial
19:00
High-Performance Programming
Рет қаралды 69 М.
RxJava - Параллельные вычисления
21:52
GrabDuck!
Рет қаралды 9 М.
Зачем нужна база данных Redis и где она используется
13:24
Дмитрий Ченгаев. Веб-разработка.
Рет қаралды 24 М.
SLIDE #shortssprintbrasil
0:31
Natan por Aí
Рет қаралды 49 МЛН