LINUX.ORG.RU

Вышел Solr 4.0

 , ,


1

3

Обновился замечательный поисковый движок Solr, основанный на библиотеке Lucene. Кодовое название релиза — «Solr Cloud».

Основные особенности: группировка результатов поиска, фасеты (теперь и вложенные), пространственный или геопоиск, мощный синтаксис запросов и фильтров, проверка правописания, подсветка результатов поиска.

Изменения, связанные с масштабируемостью и отказоустойчивостью:

  • Распределенное индексирование, спроектированное с нуля.
  • Высокая доступность, отсутствие единой точки отказа.
  • Интеграция с Apache Zookeeper.
  • Документ на запись можно отправлять любой ноде.
  • Запросы на выборку к любой ноде автоматически будут выполняться распределенно.

Изменения, связанные с хранилищем:

  • Update durability: лог транзакций гарантирует, что даже незакоммиченные документы не будут потеряны.
  • Real-time Get: возможность быстрого получения последней версии документа без необходимости коммита или открытия нового серчера.
  • Versioning and Optimistic Locking: в сочетании с Real-time Get позволяет прочитать, обновить, записать документ, гарантируя отсутствие конфликтующих изменений сделанных другими клиентами.
  • Атомарные операции обновления документа: возможность добавлять, удалять, изменять и инкрементировать поля без необходимости снова формировать документ с перечнем всех полей.

Другие изменения:

  • Pivot Faceting: многоуровневые иерархические фасеты.
  • Pseudo-fields: возможность задавать псевдонимы полям или добавлять метаданные возвращаемым документам. Например, расчет расстояния между точками при геопоиске.
  • Проверка орфографии теперь может работать сразу с основным индексом вместо создания специального индекса.
  • Pseudo-Join functionality: возможность выборки набора документов, основанной на их отношениях к другому набору документов.
  • Новые Function query, такие как условные и релевантные функции.
  • Новые Update processors для облегчения изменения документов перед индексацией.
  • Новый админ интерфейс, поддерживающий SolrCloud.

>>> Подробности

Кто-нибудь из знающих людей может подсказать чем Solr лучше/хуже SphinxSearch? В каких случаях мне надо выбрать ту или иную библиотеку? Какие есть «killer features» у этих библиотек? Самому в скором надо будет сделать выбор поискового движка для разрабатываемого портала.

anonymous ()
Ответ на: комментарий от anonymous

// этот-же анонимус нагуглил, что Lucene/Solr намног требовательнее к ресурсам сервера - memory and CPU usage и соответвенно работает тоже медленнее чем SphinxSearch.

Еще добавлю что в планах разрабатываемый портал будет содержать очень много информации в базе, соответственно хотелось-бы узнать для проектов каких масштабов подойдет Sphinx?

anonymous ()
Ответ на: комментарий от anonymous

Не знаю ни одного поискового движка, где есть группировка результатов и такие мощные фасеты. Да, у sphinx есть multi queries, но это не так удобно. Так же у sphinx'а, если не ошибаюсь, 2 индекса: основной и дельта. Не всем подходит делать полный реиндекс базы.

anti_social ()
Ответ на: комментарий от anonymous

А многоуровневые фасеты и с помощью multi queries не сделаешь (по крайней мере одним запросом).

anti_social ()
Ответ на: комментарий от anonymous

Дело в том, что солр, в отличии от сфинска, куда более развитый и написан не по-наркомански. солр можно использать как обычную библиотеку в проектах на жабе. и опять-таки: нормальный ясный интерфейс работы через хттп, респонсы в жсоне/хмл/етс без всяких бинарных данных. солр просто нормальный

anonymous ()
Ответ на: комментарий от anonymous

Да, еще у Solr'а есть крутая фишка - query boosting, то есть можно на этапе запроса с помощью формул изменять результирующий score документов. Возможно и у sphinx есть что-то подобное, но я в свое время не нашел, только на этапе индексации.

anti_social ()
Ответ на: комментарий от anonymous

Кто-нибудь из знающих людей может подсказать чем Solr лучше/хуже SphinxSearch? В каких случаях мне надо выбрать ту или иную библиотеку? Какие есть «killer features» у этих библиотек? Самому в скором надо будет сделать выбор поискового движка для разрабатываемого портала.

киллер-фича: фасеты. то бишь, группировка по какой-то (или нескольким) «группе».

kost-bebix ★★ ()
Ответ на: комментарий от anonymous

Дело в том, что солр, в отличии от сфинска, куда более развитый и написан не по-наркомански. солр можно использать как обычную библиотеку в проектах на жабе. и опять-таки: нормальный ясный интерфейс работы через хттп, респонсы в жсоне/хмл/етс без всяких бинарных данных. солр просто нормальный

+500

json рулит

anti_social ()
Ответ на: комментарий от anti_social

спасибо всем ответившим

еще кто может сказать что по поводу производительности, требований к памяти и CPU? Насколько в этом плане Solr проигрывает?

anonymous ()
Ответ на: комментарий от anonymous

Кто-нибудь из знающих людей может подсказать чем Solr лучше/хуже SphinxSearch?

Да он просто классный. Насколько я знаю, SphinxSearch не так хорошо справляется с опечатками в поисковом запросе или со словоформами. Solr найдет Януковича по запросу «януковощ», а Сфинкс нет.

anonymous ()

Опять ЛОР будет недоступен пока maxcom будет обновлять solr.

luke ★★★ ()
Ответ на: комментарий от anonymous

еще кто может сказать что по поводу производительности, требований к памяти и CPU? Насколько в этом плане Solr проигрывает?

Памяти нужно дофига и чем больше, тем лучше. CPU в основном при переиндексации.

anti_social ()
Ответ на: комментарий от anonymous

Спхинкс очень легковесный и быстрый, но довольный статичный: модифицировать конфигурацию на-лету проблематично. И есть ряд других странностей. Солр на жабе, жрёт больше памяти, но зато всяких настроек много и вообще это конструктор, а не просто поисковый движок. Если планируешь делать реально крутой поиск для крутого проекта, то на сфинксе ты его не сделаешь. Но сфинкс вроде на хабре установлен.

Солр более прожорливый, но прожорливость настраивается. Например, много памяти может уходить на всякие кеши, которые тоже можно гибко настроить.

Если будущий «портал» - просто хоумпага, то солр будет избыточен: будет шевелится сравнительно медленее и прожорливее, а 99% возможностей будут простаивать без дела. А если реально что-то серьезное, то лучше поставить сразу солр и дальше его допиливать.

shahid ★★★★★ ()
Ответ на: комментарий от anti_social

Так же у sphinx'а, если не ошибаюсь, 2 индекса: основной и дельта. Не всем подходит делать полный реиндекс базы.

Довольно давно уже есть и real-time индекс.

нормальный ясный интерфейс работы через хттп, респонсы в жсоне/хмл/етс без всяких бинарных данных. солр просто нормальный

sphinx удобно юзать там, где используется mysql, mysql клиент прекрасно общается со sphinx через обычные SQL запросы.

Да, еще у Solr'а есть крутая фишка - query boosting, то есть можно на этапе запроса с помощью формул изменять результирующий score документов. Возможно и у sphinx есть что-то подобное, но я в свое время не нашел, только на этапе индексации.

Можно конечно. Насколько помню, в sphinx 1.x было не слишком удобно это делать, сейчас ситуация иная, никаких проблем.


solr, конечно, гораздо более фичастый, чем sphinx. Мне например, на некоторых проектах пришлось использовать именно его из-за отсутствия в sphinx fuzzy поиска (через костыли и wordforms делают, но к полноценному fuzzy поиску это имеет слабое отношение).

troop ()
Ответ на: комментарий от troop

э. в сфинксе стало возможным _добавлять_ что-то в индекс, а не мержить два? ткни носом - как? и начиная с какой версии?

drF_ckoff ★★ ()
Ответ на: комментарий от anonymous

Да он просто классный. Насколько я знаю, SphinxSearch не так хорошо справляется с опечатками в поисковом запросе или со словоформами. Solr найдет Януковича по запросу «януковощ», а Сфинкс нет.

Ну скажем в Solr 3.x нечеткий поиск хоть и есть, но на больших базах так тормозит что лучше б его небыло. В 4.x обещают ускорение (автомат Левинштейна), надо смотреть

maxcom ★★★★★ ()
Ответ на: комментарий от luke

Опять ЛОР будет недоступен пока maxcom будет обновлять solr.

Пока не буду, подожду пока выйдет несколько баг-фикс релизов. Ну и да, lor из-за замены solr не ложится, это не федора и не постгресс

maxcom ★★★★★ ()
Ответ на: комментарий от drF_ckoff

э. в сфинксе стало возможным _добавлять_ что-то в индекс, а не мержить два? ткни носом - как? и начиная с какой версии?

Ну так и у Solr (вернее у Lucene) аналогичное поведение. Записанный один раз индекс нельзя модифицировать, при записи создаются новые сегменты которые потом в background'е слепливаются в более крупные. Мелкие сегменты как записаны так сразу доступны в поиске (в отличии от дельты в сфинксе, если правильно понимаю как там это работает), merge их только оптимизирует не влияя на доступность в поиске.

По другому сделали в tsearch2 в PostgreSQL — на выходе низкая производительность при индексировании, но зато realtime, транзакции и никаких фоновых merge'ей.

maxcom ★★★★★ ()
Ответ на: комментарий от anonymous

Solr найдет Януковича по запросу «януковощ»

это вин

amazpyel ★★★ ()
Ответ на: комментарий от maxcom

Мелкие сегменты как записаны так сразу доступны в поиске (в отличии от дельты в сфинксе, если правильно понимаю как там это работает)

Не совсем так, в сфинксе поиск настраивается сразу по нескольким индексам. Настраивается это очень просто:
index channel
{
type = distributed
local= channel_main
local= channel_delta
}
и теперь для клиента это выглядит как один индекс channel, хотя физически эта два индекса channel_main и channel_delta.

Но сейчас я вряд ли могу рекомендовать этот подход с учетом существования real-time индекса.

troop ()
Ответ на: комментарий от maxcom

По другому сделали в tsearch2 в PostgreSQL — на выходе низкая производительность при индексировании, но зато realtime, транзакции и никаких фоновых merge'ей.

Да, такой недостаток есть у tsearch2. У встроенного в mysql full-text индекса ровно тот же недостаток. У sphinx скорость real-time индекса очень высокая, но только за счет того, что он держит его в памяти. С другой стороны и tsearch2 и mysql стремятся держать индекс в памяти так что sphinx по скорости rt индекса значительно выигрывает у них скорей за счет лучших алгоритмов. Конечно, real-time индекс имеет свои недостатки относительно статичного индекса (http://www.ivinco.com/blog/sphinx-in-action-good-and-bad-in-sphinx-real-time-...).

troop ()
Ответ на: комментарий от maxcom

Ну это была гипербола, в прошлый раз обновление солра просто на несколько часов затруднило поиск по ЛОРу ЕМНИП.

luke ★★★ ()

Ave SOLR! Теперь на нем можно легко строить по настоящему высконагруженные/выскодоступные проекты.

risik ()
Ответ на: комментарий от drF_ckoff

realtime index

С двушки где-то. Просто там были не все фичи, и стабильность под вопросом, но вроде уже юзабельно.

Vit ★★★★★ ()
Ответ на: комментарий от risik

Это точно. Серверы солра будут очень высоко нагружены :)

Vit ★★★★★ ()
Ответ на: комментарий от anonymous

Сфинкс очень простой и очень быстрый. Надо сначала смотреть его, а если не хватит фич - остальное.

Люсеновское семейство умеет индексировать документы произвольной структуры, но это не всегда надо. На люсене еще сделан Elastic Search.

Vit ★★★★★ ()
Ответ на: комментарий от anonymous

Такой нечеткий поиск по документам нафик не уперся, тем более ценой падения скорости на порядок. Надо не искать по кривулинам, а исправлять их.

А для исправления нужно делать лог поисковых запросов и потом сравнивать слова левенштейном. Будет дешево и сердито.

Vit ★★★★★ ()
Ответ на: комментарий от Vit

Что подразумевается под fuzzy search?

В Lucene fuzzy search это поиск по расстоянию Левенштейна до заданного слова

maxcom ★★★★★ ()
Ответ на: комментарий от anonymous

аналог соляру только эластик (там мощные запросы можно строить) Сфинкс фигня для школьников.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.