2008-09-16 18 views

Odpowiedz

16

Myślenie Sphinx ma bardziej zwięzłą składnię, aby określić, które pola i które modele są indeksowane.

Zarówno UltraSphinx jak i Thinking Sphinx (ostatnio) mają ultra-fajną funkcję, która bierze pod uwagę bliskość geograficzną obiektów.

UltraSphinx ma irytujące problemy z ładowaniem modeli (nie ładuje całego stosu Railsów, więc można uzyskać dziwne i trudne do zdiagnozowania błędy, które są obsługiwane przez dodanie wyraźnych instrukcji require).

Używamy Thinking Sphinx w nowych projektach i UltraSphinx w projektach wykorzystujących treści geo.

+2

Ciekawi, jeśli obie mają wsparcie dla treści geo, dlaczego "używać Thinking Sphinx przy nowych projektach, a UltraSphinx w projektach wykorzystujących treści geo"? –

0

Użyłem Myślenie Sphinx i wydaje się całkiem dobrze, ale nie miałem czasu, aby ocenić wszystkie opcje.

0

Polecam Thinking Sphinx. Jest to najszybsza opcja w mojej opinii.

0

Użyłem Ferret i działało dobrze dla moich celów, ale nie oceniłem innych opcji.

4

Użyłem tylko kombi Ferret/acts_as_ferret (starsza decyzja) dla projektu klienta. Gorąco polecam najpierw zapoznać się z opcjami innych.

aaf jest bardzo delikatny i może spowodować, że Twoja aplikacja Railsowa przestanie krzyczeć, jeśli popełnisz błąd w konfiguracji lub z jakiegoś powodu trafisz na błąd w Aaf.

W takim przypadku, zamiast po prostu zagnieżdżać funkcjonalność wyszukiwania, wszelkie działania kontrolera dotykające modelu indeksowanego całkowicie zawiodą i podniosą wyjątek. Co jest baaad, hmkay?

5

Solidną opcją używaną przez jednego z moich znajomych jest Solr, wyszukiwarka korzystająca z oryginalnego Lucene opartego na języku Java.Aby użyć go z Railsami, istnieje oczywiście wtyczka acts_as, acts_as_solr.

Niedawno zaprezentował combo pod numerem Montreal on Rails i daje niezły i dokładny przegląd how to use acts_as_solr on his blog.

Widocznie bardzo dobrze obsługuje francuskie akcenty.

0

Używamy domeny http://hyperestraier.sourceforge.net/, która została odziedziczona. Nie zajrzałem do innych silników, ale hyperestraier zapewnia wszystkie niezbędne haki. Ustawienie indeksu wyszukiwania jest jednak skomplikowane. Prawdopodobnie łatwiej dostępne opcje.

10

To pytanie zostało zadane wcześniej here z bardziej szczegółowymi odpowiedziami.

5

Przechodzę teraz dokładnie ten proces, więc chociaż nie posiadam faktycznego doświadczenia, spędziłem wiele godzin na badaniu wszystkich opcji. Oto, czego się nauczyłem do tej pory:

  • * Sfinks - dobra reputacja w zakresie szybkości i funkcjonalności, ale Sphinx potrzebuje kluczy całkowitych, a mój model wykorzystuje identyfikator GUID; ThinkingSphinx niedawno ogłosił wsparcie dla GeoSpatial
  • Acts_As_Solr - zalecane przez znajomego z dużą ilością stron; oryginalni twórcy przestali nad nim pracować i trudno jest znaleźć dokumentację; Wymaga aplet Java
  • Acts_As_Ferret - wygląda na łatwy w użyciu, ale wiele przeciwników, które mówią jej niestabilny
  • Dwie inne z ograniczoną informacje są Acts_As_Indexed i Acts_As_Searchable

Mam arkusz z moją próbę dokumentowania zalety i wady każdego z nich. Jeśli ktoś jest zainteresowany widzeniem tego i/lub pomaganiem mi to poprawić, po prostu skontaktuj się ze mną. Opublikuję go gdzieś, gdy tylko będę wiedział, co jest dokładne.

Moja rekomendacja to wypróbowanie UltraSphinx lub Thinking Sphinx, jeśli masz normalne klucze podstawowe. Mam zamiar wypróbować Acts_As_Xapian na podstawie dobrej dokumentacji, zestawu funkcji i tego, jak aktywny wydaje się być projekt.

1

Używam acts_as_ferret. Jest łatwy do skonfigurowania i ogólnie szybki. Wbudowana funkcjonalność odnajdywania rekordów aktywnych jest bardzo przydatna: możesz zastosować dowolne warunki lub dołączyć do innych modeli po znalezieniu pasujących rekordów.

W przeciwieństwie do sfinksa, nie musisz ponownie indeksować WSZYSTKICH swoich rekordów, gdy dodajesz nowe dane. Istnieją hooki after_save i after_update, które wstawią nowy rekord do bazy danych fretki. To był jeden z największych punktów sprzedaży dla mnie.

Gdy musisz masowo indeksować swoje dane, fretka jest zdecydowanie wolniejsza niż acts_as_sphinx (o współczynnik 3). Skończyło się na tym, że napisałem własną metodę ponownego indeksowania modeli, która działa tak szybko, jak sfinks - w zasadzie wstępnie wczytuje wszystkie dane z bazy danych zamiast zapisywania rekordu przez rekord w celu utworzenia nowego indeksu.

Dokumentacja fretek jest dobra dla podstaw, ale jest nieco rzadka, gdy dostajesz się do bardziej złożonych wyszukiwań, sortuje i używa serwera dRb do obsługi zdalnego indeksu. Mimo to, wydaje mi się, że jest to produkt o wiele bardziej dojrzały niż act_as_sphinx, chociaż mam ograniczone doświadczenie z sfinksem.

0

To zależy od używanej bazy danych. Polecam używanie Solr, ponieważ oferuje wiele fajnych opcji wyszukiwania fuzzy i ma świetny analizator zapytań. Minusem jest to, że musisz uruchomić dla niego oddzielny proces.Użyłem również fretki, ale okazało się, że jest mniej stabilna pod względem wielowątkowego dostępu do indeksu. Nie próbowałem Sphinx, ponieważ działa tylko z MySQL i Postgres.

0

Używam innej opcji, która została opracowana zadziwiająco dobrze. Używam jruby i rozmawiam bezpośrednio z Lucene.

Użyłem act_as_solr w przeszłości i napotkaliśmy pewne problemy. głównie wykonuje synchroniczne wywołanie dla każdego zapisu AR. To nie jest tak źle, ale w mojej sytuacji uratowanie czasami powodowało wiele synchronicznych wywołań do solr i czasami bywało dłużej niż pozwoliłby kundel i uzyskałbym wyjątek limitu czasu (lub coś podobnego)

0

Myślenie Sfinksa jest lepszą alternatywą niż Ultrasphinx, który wydaje się być porzucony, ale generalnie Xapian ma mocniejszy silnik niż Sphinx i łatwiej jest realizować wyszukiwanie w czasie rzeczywistym.

0

Polecam acts_as_ferret. Ale chociaż trudnym zadaniem jest sprawienie, aby serwer działał poprawnie na twoim serwerze, nie ma problemu, ponieważ serwer fretek będzie działał jako osobny proces w tle, aby zaktualizować twój indeks za każdym razem, gdy pojawi się jakaś nowa aktualizacja. Poza tym działa świetnie w kundlu z Apache dla nas.

0

Szukałem również idealnego rozwiązania. Na początku pojechałem z Thinking Sphinx, który działał dobrze. Ale ponieważ mam zamiar hostować moją aplikację internetową pod numerem Heroku, jedyną opcją jest użycie Solr. Największą wadą jest jednak to, że rozwój głównego klejnotu acts_as_solr zatrzymał się po maju 2008 roku. Jest to zbyt stary jak na mój gust. Właśnie znalazłem Sunspot jako zaawansowaną alternatywę i najnowsze aktualizacje, więc to jest jedna, którą zamierzam wziąć pod uwagę.

Inną opcją, którą oferuje Heroku, jest wybranie hostowanego serwera indeksu opartego na systemie Solr o nazwie Websolr. Wymagany klejnot websolr-acts_as_solr jest również na szczęście bardzo aktualny.

1

Jeśli korzystasz ze współdzielonej usługi hostingowej, takiej jak ja (Bluehost), Twoje opcje mogą być ograniczone do tego, co oferuje dostawca. W moim przypadku nie mogłem znaleźć dobrego i niezawodnego sposobu na uruchomienie oddzielnego serwera, takiego jak Lucene lub Solr.

Dlatego też poszedłem z Xapianem i to działa dobrze dla mnie. Istnieją dwie wtyczki dla szyn, które badałem: acts_as_xapian i xapian_fu. Pierwsza szybko sprawi, że będziesz działać, ale nie wydaje się już dłużej utrzymywana. Właśnie zacząłem pracować z xapian_fu.

1

Jeśli ktoś nadal jest zainteresowany, najnowszą rzeczą, której należy teraz użyć, jest elasticsearch. Dostępne są klejnoty takie jak opony lub elastyczne szyny-. Opiera się również na Lucene, jak Solr, oparty na Javie. Solr jest obecnie zintegrowany z tym projektem ...