Pull to refresh

Comments 61

А чем вам не угодил Lucene? Всем требованиям удовлетворяет, есть обертки под все популярные языки. А уж о качестве и говорить нечего: даже твиттер на него перешел.
+1
глядя на результаты поиска по Хабру — связываться со Sphinks нет никакого желания… хотя конечно виной тому могут быть кривые руки программистов ТМ
Использую сфинкс уже года четыре. Во многих проектах. Принципиальных претензий нет. Скорость просто замечательная! Жаль, что в качестве ключа нельзя использовать текст.
«Что же это такое? По сути — это новый фронт-енд к широко известному индексу 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 — это нисколько не «гибкость в настройках под индивидуального пользователя», если верить Гуглу, Вики и другим.
было
$generator->run(5000000);
получили
«count»: 5128888,

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

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

Articles