Обновить

Комментарии 61

А чем вам не угодил Lucene? Всем требованиям удовлетворяет, есть обертки под все популярные языки. А уж о качестве и говорить нечего: даже твиттер на него перешел.
Или Sphinx или Solr
> Sphinx

Спасибо, не надо.
+1
глядя на результаты поиска по Хабру — связываться со Sphinks нет никакого желания… хотя конечно виной тому могут быть кривые руки программистов ТМ
Очень зря, судите лучше по поиску ребят, перечисленных вот здесь:
http://sphinxsearch.com/info/powered/
Использую сфинкс уже года четыре. Во многих проектах. Принципиальных претензий нет. Скорость просто замечательная! Жаль, что в качестве ключа нельзя использовать текст.
«Что же это такое? По сути — это новый фронт-енд к широко известному индексу Lucene.»
Автор как бы намекает…
тогда автор неправильно создал название топику, т.к. поисковым движком тут не пахнет, просто обертка над ним.
Lucene — это не поисковый движок, это библиотека для написания поисковых движков.
с этим я согласен, т.к.:

блин, парсер съел:

Lucene itself is just an indexing and search library and does not contain crawling and HTML parsing functionality.
Да кравлинг и парсинг хтмл тут не при чëм. Люцен — это не демон, у него нет никакого внешнего интерфейса, и т.п. Он умеет строить индексы и по ним искать, и только этим и занимается. Кроме того, эластиксëрч, например, неплохо реализует реалтаймовый поиск, с чем солр не очень справляется — так что свойства поисковика определяются не только библиотекой.

Короче, нормальный заголовок, хотя статья фактически ни о чëм — намного интереснее почитать блог-посты на сайте эластиксëрча.
я так понял, что ты используешь его?

Напиши статью, будет интересно сравнить, например, с тем же sphinx (понимаю, что полноценно не сравнить) из личного опыта (если конечно ты сфинкс использовал).
Не, но игрался. Я сейчас использую сфинкс, а не его, только потому, что сфинкс мало памяти ест (эластиксëрч на старте от 100 мб, для маленького впс неприятно ;).

Но у эластика есть куча приятных фич, которых в сфинксе нет никак, можно вот посмотреть в их постах:

www.elasticsearch.org/blog/2011/05/13/data-visualization-with-elasticsearch-and-protovis.html
www.elasticsearch.org/blog/2011/02/08/percolator.html
www.elasticsearch.org/blog/2011/02/08/versioning.html
www.elasticsearch.org/blog/2010/08/16/geo_location_and_search.html
так вроде ж геолокейшн есть и в сфинксе
Та есть, но он убог. В эластике можно искать на каком-то расстоянии, в ограничивающем прямоугольнике, в полигоне. А в сфинксе только ранжировать на расстоянии, насколько я понимаю, и всë. :(
ты смотрел последние беты сфинкса?
Ну, 2.0.1-beta. Я даже доку еще раз перелистал. Либо ничего нет, либо только ранжирование.
Я больше о несоответствии названия топика его содержимому, с Lucene никогда не работал, поэтому этот ньюанс от меня ускользнул :)
хотя даже в википедии написано, что:

ElasticSearch – A Distributed, Highly Available, RESTful Search Engine.

Кому интересно верить. :)
Мне верить, википедии верить. Я сказал, что люцен — не полноценный движок, что не противоречит тому, что эластиксëрч — он самый.
я о том, верить ли названию топика или википедии :) Впрочем, ответ уже понятен :)
Позволю себе не согласиться с этим (цитата с офф сайта: «Apache Lucene(TM) is a high-performance, full-featured text search engine library»). Lucene предоставляет сам по себе вполне удобный апи. На одном из проектов, на котором я работал, мы использовали чисто его (Lucene.NET, точнее), без Solr или ElasticSearch, и весьма успешно.

В конце концов, Solr или ElasticSearch--это всего лишь обертки (Facade, Wrapper, Adapter--как хотите) для Lucene, вызовы функций которых выполняются через Remote Procedure Call. Ничто вам не мещает написать свою обертку на любимом языке программирования и вызывать ее методы локально.

Но, на мой взгляд, необходимости в этом часто нет--опять же, интерфейс Lucene очень хорош сам по себе.
" search engine library" — слово «library» тут ключевое. Вы использовали Lucene.NET как раз потому, что Lucene без полноценного сервера использовать не могли.

В любом случае, они-то конечно обëртки, но поведение у них весьма разное.
Виноват, пропустил эту строчку. С другой стороны, как пишут в комментарии ниже, действительно, название не совсем соответствует предмету обсуждения.
Lucene — это либа, на которой построены Solr и Elasticsearch.
Мне кажеться, сравнивать с Zend_Search_Lucene не совсем корректно — это все же не самостоятельный продукт, а просто РНР-порт (с учетом ограничений и особенностей) и работает как просто библиотека, а не самостоятельный сервис (хотя используя его можно написать аналог еластиксерча на РНР)
Полностью с вами согласен… поэтому в данной статье я просто хотел ознакомить читателей хабра с этим движком и не старался сравнивнивать его с конкурентами. Было бы очень интересно почитать про сравнение Elasticsearch с тем же Solr, Sphinx, Xapian и т.д.
о каком вообще измерении скорости может идти речь, если вместо curl_init или на худой конец fsockopen вы делаете exec('curl -XPUT \'http://localhost:9200/habrahabr/users/'. $id. '\' -d \'… )? вы понимаете, время чего именно вы измеряете?
какой-то детский сад штаны на лямках
Как со стеммингом и морфологией? Русской, в частности?
Спасибо. Надо попробовать.
По сравнению с английским, весьма криво поддерживает, надо сказать.
Приходилось иногда вручную подчищать резльутаты, т.к. некоторые суффиксы им игнорировались начисто.

Пример из кода:
# if adjective
my $stemmer = Lingua::Stem::Snowball->new(lang => $self->{locale}{lang}, encoding => 'UTF-8');
$stemmed = $stemmer->stem($self->{query});
$stemmed =~ s{$_$}{} for qw(ец ск ий); # these are most common suffixes that are not processed by Porter's snowball
А у Вас опыт продакшн использования ElasticSearch был?
Сейчас крутится в продакшене в качестве поисковика по структурированным документам. В будущем будет задействован и для полнотекстового поиска.
Multi-tenancy — это нисколько не «гибкость в настройках под индивидуального пользователя», если верить Гуглу, Вики и другим.
согласен, не самое точное определение. Но, по-моему, оно отображает суть термина
http://ru.wikipedia.org/wiki/Multitenancy
было
$generator->run(5000000);
получили
«count»: 5128888,

чему верить?
Я не очистил индекс перед запуском скрипта и в индексе остались проиндексированные данные предыдущих тестов (128888 записей). Думаю это нисколько не повлияло на результаты теста.
Все примеры — поиск по полям (имя, страна...), приведите пример полнотекстового поиска, речь же об этом.
Тоже видел ElasticSearch, тоже понравился. Предлагал на пару проектов, но пока все приросли к Solr. Ничего, думаю, наберет популярность, все, что есть в Solr, вроде бы есть и в нем, но конфигурируется более удобно/динамично, и есть то, чего в Solr нет или только будет, может в виде не слишком красивой прилуды.
А Sphinx чем не устраивает?
это разные вещи (кроме базы — поискового движка). у сфинкса при всех его достоинствах, нет REST и JSON интерфейса
А зачем он? У Sphinx есть клиент, который отдает id-шники найденных документов. Потом взял их в базе и все.
для того чтобы поиск был отдельным. И универсальный интерфейс доступа, не связанный с конкретикой реализации записи.

К еластиксу можно обращаться напрямую с веб-страницы, получая в виде JSON результат.
А Sphinx можно встроить в MySQL как плагин и использовать его прямо в SQL-запросах. :)
Тем, кто всерьез интересуется, но пока еще сомневается: у вас есть шанс пообщаться с одним из разработчиков ElasticSearch на конференции YAPC::Europe. Конференция пройдет в Риге, с 13 по 15 августа.
yapceurope.lv/ye2011/talk/3371
yapceurope.lv/ye2011/talk/3372
Виноват, с 15 по 17.
Если информация о том, что есть подобные движки пойдет в массы, то тогда можно ждать новых поисковиков тима ВЯндексе, ВГугле, ВРамблере и т.п.
>К сожалению, никакой информации на русском языке я найти не смог.
Напиши Андрею Змиевскому письмо, он ответит на все твои вопросы. Лмчно знаю его, очень дружелюбный…
что было бы действительно интересно Хабросообществу — эта сравнение со Сфинксом,
что такого может эластик-сеач, чего не может сфинкс. Если сказать, что сфинкс не может JSONто это дело двух дней и небольшой демонёнок sphinx-proxy сможет понимать JSON
меня интересует функционал и скорость.
Как минимум, невооружённым глазом видны «живые» апдейты и даже больше — “realtime get” ( github.com/elasticsearch/elasticsearch/issues/1060 )
это не показатель
меня функционал интересует, частично информацию подчерпнул из обсуждения, что нужно было упомянуть в статье обязательно: эластик-сёрч — это REST обертка основанная на поисковом движке Lucene.
По сравнению с Lucene, Sphinx дает +10 очков
Для Вас не показатель, для меня показатель. То, что эластик — фронтенд к люцену, написано явным образом в статье.
примерчик бедненький, подскажите,
вот в сфинксе можно назначить вес полям записей при индексации,
ну например «Заголовок_резюме» более значим чем «Опыт_работы» (указываем коэф.),
а в Эластике (Люценте) можно так индексировать?
Сколько занимает на диске подобный индекс?
Мы кстати сделали hosted ElasticSearch со множеством плюшек вокруг: http://indexisto.com/ )
Есть готовая AJAX строка поиска которая поддерживает кучу всего из стандартного ответа кластика: фасеты, сортировки, хайлайт, саджесты
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации