Wybór autonomicznego serwera wyszukiwania pełnotekstowego: Sphinx czy SOLR? [Zamknięte]

192

Szukam autonomicznego serwera wyszukiwania pełnotekstowego o następujących właściwościach:

  • Musi działać jako samodzielny serwer, który może obsługiwać żądania wyszukiwania od wielu klientów
  • Musi być w stanie wykonać „indeksowanie zbiorcze” poprzez indeksowanie wyniku zapytania SQL: powiedz „WYBIERZ identyfikator, text_to_index Z dokumentów;”
  • Musi być wolnym oprogramowaniem i musi działać w systemie Linux z MySQL jako bazą danych
  • Musi być szybki (wyklucza wewnętrzne wyszukiwanie pełnotekstowe MySQL)

Znalazłem alternatywy, które mają te właściwości:

  • Solr (na podstawie Lucene)
  • ElasticSearch (również oparty na Lucene)
  • Sfinks

Moje pytania:

  • Jak oni się porównują?
  • Czy przegapiłem jakieś alternatywy?
  • Wiem, że każdy przypadek użycia jest inny, ale czy są pewne przypadki, w których zdecydowanie nie chciałbym używać określonego pakietu?
knorv
źródło
1
Czy wykluczyłeś używanie prostej Lucene? Solr to usługa na szczycie lucenu, więc prosta Lucene mogłaby być stile.
Dave
Czy Lucene ma autonomiczny tryb serwera? Myślałem, że to jedna z rzeczy dodanych przez SOLR? Niczego nie wykluczyłem - więc
zachęcaj
mausch: Głównie Java, ale także inne języki.
knorv
Osobiście lubię Sfinksa. Jednak podczas „dużego” projektu ostatnio najnowszy kandydat do wydania (0.9.9-rc2) wykazywał błędy zatrzymania podczas używania tablic wielowartościowych (MVA). To losowe wyniki! Więc przenieśliśmy się do SOLR, aby obejść ten problem. Gdy SOLR był już uruchomiony i działał, wydajność była w porządku i bez błędu zatrzymania programu.
pchap10k
2
Czy spojrzałeś na elasticsearch.com?
FYA,

Odpowiedzi:

327

Używam Solr z powodzeniem od prawie 2 lat i nigdy nie użyłem Sfinksa, więc jestem oczywiście stronniczy. Jednak postaram się zachować obiektywizm, cytując dokumenty lub inne osoby. Zrobię też łatki do mojej odpowiedzi :-)

Podobieństwa:

  • Zarówno Solr, jak i Sfinks spełniają wszystkie Twoje wymagania. Są szybkie i mają na celu efektywne indeksowanie i wyszukiwanie dużych zbiorów danych.
  • Oba mają długą listę witryn o dużym natężeniu ruchu, które ich używają ( Solr , Sfinks )
  • Oba oferują wsparcie komercyjne. ( Solr , Sfinks )
  • Oba oferują wiązania API klienta dla kilku platform / języków ( Sphinx , Solr )
  • Oba mogą być dystrybuowane w celu zwiększenia prędkości i pojemności ( Sfinks , Solr )

Oto kilka różnic:

Powiązane pytania:

Mauricio Scheffer
źródło
4
Mówiąc o deweloperach zaangażowanych zarówno w Solr, jak i Lucene, wydaje się, że połączyli te dwa produkty, dzięki czemu dalszy rozwój jest łatwiejszy i szybszy - lucidimagination.com/blog/2010/03/26/… .
jimmystormig,
3
@Stann: jak to możliwe? Korzystam z Solr prawie 5 lat temu i nigdy nie potrzebowałem pisać ani jednej linii Java.
Mauricio Scheffer,
@MauricioScheffer Naprawdę uważasz, że kod Java będzie szybszy niż C ++. Oto porównanie dokonane przez Billa Karwina i Sphinxa, które pytają o rzeczy 10 razy szybciej niż Lucen (a solr musi być jeszcze wolniejszy niż.) Slideshare.net/billkarwin/...
Stann
3
@Stann: czy naprawdę uważasz, że potrzebujesz większej wydajności niż whitehouse.gov, Netflix, The Guardian, digg, żeby wymienić tylko kilka stron internetowych wykorzystujących Solr? wiki.apache.org/solr/PublicServers
Mauricio Scheffer
3
Oto odpowiedź na temat Sfinksa, która jest dobrą parą do tej odpowiedzi na Solr
New Alexandria
48

Jeśli nie musisz rozszerzać funkcji wyszukiwania w jakikolwiek zastrzeżony sposób, Sphinx jest najlepszym wyborem.

Zalety Sfinksa:

  1. Programowanie i konfiguracja jest szybsza
  2. Znacznie lepsza (i szybsza) agregacja. To była dla nas funkcja zabójcy.
  3. Nie XML. To właśnie ostatecznie wykluczyło dla nas Solr. Musieliśmy zwrócić raczej duże zestawy wyników (pomyślmy o setkach wyników), a następnie sami je zagregowaliśmy, ponieważ brakowało agregacji Solr. Ilość czasu na serializację do i z XML po prostu absolutnie zabiła wydajność. Jednak dla małych zestawów wyników było idealnie.
  4. Najlepsza dokumentacja, jaką widziałem w aplikacji typu open source

Zalety Solr:

  1. Można przedłużyć.
  2. Może trafić bezpośrednio z aplikacji internetowej, tzn. Możesz wyszukiwać podobne do autouzupełniania bezpośrednio na serwerze Solr za pośrednictwem AJAX.
larf311
źródło
29
Solr ma wielu autorów odpowiedzi innych niż xml, w tym JSON, PHP, Ruby, Python i binarny format java: lucene.apache.org/solr/api/org/apache/solr/request/…
Mauricio Scheffer
24
Czy wspomniałem, jak straszna jest dokumentacja Solr / Lucene? Konieczność rootowania przez Javadocs w celu zrozumienia funkcjonalności nie jest moim pomysłem na dokumentację.
larf311
3
Powinienem był link do wiki: wiki.apache.org/solr/…
Mauricio Scheffer,
2
Cały dzień spędzam naprawiając błąd instalacyjny sfinksa 0.9.9 na moim komputerze Mac. Do tej pory nadal nie działa. To takie buggy. Użyłem bardzo sugerowanych sposobów.
Rezygnuję
Dokumentacja solr nie jest tak dobra jak sfinks. ale społeczność jest duża. I zawsze mogę dowiedzieć się wszystkiego, czytając kod źródłowy solr.
Tyler Long
21

Uwaga: jest wielu użytkowników, którzy myślą o tym samym pytaniu.

Aby odpowiedzieć na pytanie:

Które i dlaczego

  • Użyj Solr, jeśli zamierzasz używać go w swojej aplikacji internetowej (wyszukiwarka w przykładowej witrynie). Z pewnością okaże się świetny dzięki API. Zdecydowanie będziesz potrzebować tej mocy do aplikacji internetowej.

  • Użyj Sphinx, jeśli chcesz naprawdę szybko przeszukiwać mnóstwo dokumentów / plików. Indeksuje też bardzo szybko. Odradzam używanie go w aplikacji, która wymaga JSON lub parsowania XML, aby uzyskać wyniki wyszukiwania. Użyj go do bezpośredniego wyszukiwania dB. Działa świetnie na MySQL.

Alternatywy

Chociaż są to olbrzymy, jest ich o wiele więcej. Są też tacy, którzy używają ich do zasilania swoich niestandardowych ram. Powiedziałbym więc, że naprawdę niczego nie przegapiłeś. Chociaż istnieje jedno elastyczne wyszukiwanie, które ma dobrą bazę użytkowników.

Augiwan
źródło
13
ten niezręczny moment, kiedy po półtora roku czytam tę odpowiedź, klikam głosowanie i widzę, że sam napisałem tę odpowiedź. lol. : DA mały dodatek do tego: Po 18 miesiącach elasticsearch okazało się świetną alternatywą i ma też przyzwoitą społeczność. Fajnie, bonsai super!
Augiwan
Augustus! Ten niezręczny moment: D. Więc jak dla aplikacji internetowej Python, co według Ciebie jest teraz najlepsze? Solr czy elastyczne wyszukiwanie w oparciu o wydajność, wykorzystanie pamięci i łatwość konfiguracji dowolnego pomysłu?
Mevin Babu,
Nie ma znaczenia, w jakim języku jest napisana aplikacja internetowa. Wybierz w zależności od przypadku użycia!
Augiwan
19

Używam Sfinksa od prawie roku i to było niesamowite. Mogę zindeksować 1,5 miliona dokumentów w ciągu około minuty na moim MacBooku, a jeszcze szybciej na serwerze. Używam również Sfinksa, aby ograniczyć wyszukiwanie do miejsc w określonych szerokościach i długościach geograficznych, i to jest bardzo szybkie. Również sposób rankingu wyników jest bardzo drobiazgowy. Łatwy w instalacji i konfiguracji, jeśli czytasz samouczek lub dwa. Prawie 1.0 status, ale ich kandydaci do wydania byli niesamowicie solidni.

lo_fye
źródło
3
Wyszukiwanie geograficzne można przeprowadzić w Solr za pomocą wtyczki LocalSolr
Mauricio Scheffer
1
możesz zindeksować 1,5 miliona dokumentów w ciągu minuty? Nie mogę nawet zbliżyć się do CZYTANIA tak wielu - bezpośrednio z 7zip (bez pisania, wysyłania do konsoli) plików na moim dysku SSD! I to jest 2017 rok! Jakie to są dokumenty? To całkiem niewiarygodne. Uwaga: Mam nadzieję, że nie miałeś na myśli przeszukiwania indeksu 1,5 miliona w ciągu minuty. Wyszukiwania indeksu z 1,5 miliona dokumentów powinny nadal powracać w ciągu kilku sekund (nawet w 2009 r.).
FastAl
2

Lucene / Solr wydaje się być bardziej promowany i ma więcej lat w biznesie oraz znacznie silniejszą społeczność użytkowników. imho, jeśli uda ci się obejść problemy z początkową konfiguracją, ponieważ niektórzy wydają się mieć do czynienia (nie my), powiedziałbym, że Lucene / Solr jest najlepszym wyborem.

Angsuman Chakraborty
źródło
Społeczność użytkowników jest ważnym punktem. Na forach Sfinksa jest kilka BARDZO, BARDZO pomocnych ludzi, ale poza tym nie ma silnej społeczności.
mlissner