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.
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"? –