Solr - полнотекстовый поиск от Apache (на основе Lucene)
Apache Solr - это расширяемая поисковая платформа от Apache. Система основана на библиотеке Apache Lucene и разработана на Java. Особенности ее в том, что она представляет из себя не просто техническое решение для поиска а именно платформу, поведение которой можно легко расширять/менять/настраивать под любые нужды - от обычного полнотекстового поиска на сайте до распределенной системы хранения/получения/аналитики текстовых и других данных с мощным языком запросов.
Основные особенности
- Расширенные возможности полнотекстового поиска
- Оптимизирован под Web системы с большой нагрузкой
- Стандартные интерфейсы протокола - XML, JSON, HTTP
- Web панель администрирования (интерфейс для тестовых запросов, статус сервера и компонент, отладка и оптимизация анализатора…)
- JMX статистика
- Масштабирование - репликация и шардинг в составе платформы
- Огромная гибкость благодаря мощной системе конфигурации
- Расширяемость благодаря поддержке плагинов
- Индексация в реальном времени
- Текстовый анализ (разнообразные текстовые фильтры)
- Кеширование
- Мощный язык запросов (фильтры, сортировки, работа с датой/временем, функциональные запросы и многое другое)
- Готовые клиенты для множества языков разработки (в том числе PHP)
- Приблизительный поиск (неточные совпадения) и проверка запросов на ошибки (подсказки вариантов)
Lucene
Платформа Solr основана на библиотеке полнотекстового поиска Apache Lucene. Библиотека предоставляет большой и гибкий набор функционала для реализации полнотекстового поиска. Поскольку Lucene является библиотекой, то Вам самим необходимо заботиться о всем, что не входит в ее функционал (установка, администрирование, протокол обмена данными с приложением, приложение индексирования, масштабирование и т.п.). Solr представляет как раз тот продукт, который нужен в этом случае, обеспечивая разработчиков отличным набором всех необходимых инструментов.
Следует обратить внимание на то, что Solr предоставляет готовые решения для масштабирования будующего приложения. Ко всему прочему, будучи разработанным на Java он не привносит дополнительных языковых оверхедов в фукнцианальность Lucene (таких, например, как невероятно медленный Zend_Search_Lucene).



А как там с поддержкой русской морфологии?? По моему надо допиливать напильником очень. Стремить все подрят.
По умолчанию стеммер Solr поддерживает такие языки:
Danish
Dutch
English
Finnish
French
German2
German
Italian
Kp
Lovins
Norwegian
Porter
Portuguese
Russian
Spanish
Swedish
Поэтому, как видите с русской морфологией все ОК. Детальнее тут: http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters
Другой вариант - Вы можете взять за основу алгоритм snowball http://snowball.tartarus.org/algorithms/russian/stemmer.html и написать свой собственный стеммер.
По поводу русского языка:
Если ли у Вас практический опыт или Вы просто ссылаетесь на документацию?
В каких масштабах вы использовали Солр для индексации русского текста?
Можно ли увидеть работающий вариант онлайн и потыкать запросы?
Спасибо.
Практический опыт с русским есть, но именно с русским стеммингом не работал. Если поделитесь деталями, буду благодарен.
Вот тут реализован поиск на солре: http://music.nur.kz/search по русским исполнителям.
поиск по словам люди/людям даёт разные результаты
@Влдаимир
Это потому, что стемминг (как я вроде бы говорил) там не используется.