Fablo: instant search, czyli jak zmieniamy standardy wyszukiwania

2010-10-16

Dwa tygodnie temu pisałem o tym, jak udało nam się przyspieszyć działanie wyszukiwarki Fablo. Dziś efekt prac: mamy instant search dla e-commerce. Natychmiastowe wyszukiwanie, które przewraca do góry nogami dotychczasowe standardy w wyszukiwaniu. Zapraszam do obejrzenia na screencaście (tutaj lub bezpośrednio w YouTube):

A teraz FAQ (tak, już mi kilka osób zadało te pytania):

  • Czy na wideo jest prawdziwa prędkość działania? Czy to nie jest uruchomione lokalnie na komputerze?

Tak, to jest prawdziwa prędkość. Serwer to produkcyjny serwer Fablo uruchomiony w Amazon AWS (EC2).

  • Dlaczego podczas wyszukiwania pojawia się napis: "Czas wyszukiwania: 0 sekund"?

Nasz serwer mierzy czas wywołaniem System/currentTimeMillis, ma więc rozdzielczość milisekundową. Czasy odpowiedzi poniżej 1ms są zaokrąglane do 0.

  • Każdy umie szybko wyszukiwać ciągi znaków. Co w tym trudnego?

A z obsługą literówek? Polskich znaków? Odmiany wyrazów? Liter zamienionych ze sobą miejscami?

  • To pewnie jest fikcyjna baza danych z kilkoma produktami?

Nie, demonstracja jest uruchomiona na kompletnej bazie danych sporego sklepu.

Inaczej mówiąc, to co widać na wideo to jest to, co można dziś mieć w swoim sklepie. Co więcej, można mieć abonament na innowację: wprowadzenie Fablo oznacza, że wyszukiwanie staje się z czasem coraz lepsze, bez wysiłku ze strony sklepu.

Wkrótce kolejne screencasty!


Komentarze

Gratuluję! Ja jestem pod wrażeniem.

bauer2010-10-16

Imponujące. Rozumiem, że to sprawka Clojure. Można prosić o więcej szczegółów, gdzie jego cechy zostały wykorzystane?

Poza tym, bardzo, bardzo zainteresował mnie temat serwer Fablo uruchomiony w Amazon AWS (EC2). Można prosić o więcej szczegółów dot. konfiguracji? Samemu przymierzam się do EC2, ale wciąż za mało wiedzy.

Jacek Laskowski2010-10-16

Bardzo słaba jakość nagrania. Dopiero "HD" pokazuje wyraźnie napisy.
Warto to poprawić.

AWO2010-10-16

AWO: Niestety, nie mamy na to wpływu. YouTube tak pokazuje i wymaga ręcznego przełączenia na "HD". Dodałem za to link do oryginalnego wideo pod postem.

Jan Rychter2010-10-17

Jacek: tak, większość oprogramowania jest napisana w Clojure i działa na JVM. Clojure pomaga nam pisać bardzo elastyczny kod, którego jest mało, za to robi sporo. Dzięki temu że jest go mało możemy dużo eksperymentować, stąd szybki postęp i technologie, które u innych wymagają przepisywania dużych części silnika. Clojure pomaga też bardzo ze współbieżnością.

Co do AWS — nie chcę podawać wszystkich szczegółów, bo jednak konkurencja nie śpi. Mogę napisać, że zbudowaliśmy rozproszoną architekturę, gdzie każdy element oprogramowania może zostać wyłączony w dowolnym momencie. Oprogramowanie podzielone jest na kilka modułów, dzięki czemu możemy niezależnie skalować obsługę zapytań, ściąganie i aktualizację danych, oraz samo indeksowanie i uczenie maszynowe.

Serwery obsługujące zapytania (API) zbudowane są tak, że każdy może obsługiwać jednego lub więcej klientów, są też równoprawne: każdy potrafi odpowiednio przekierować zapytanie do innych serwerów. Dzięki temu jesteśmy w stanie robić takie rzeczy jak upgrade oprogramowania bez przerwy w obsłudze zapytań.

Używamy głównie instancji m1.large, ze względu na RAM, ale w przyszłości pewnie bardzo zróżnicujemy używane maszyny.

Jan Rychter2010-10-17

Czy robiłeś pomiary szybkości indeksowania? Jestem ciekawy, jak Wasz produkt wypada w porównaniu ze Sphinxem, który, cytuję*: "Sphinx indexes up to 10-15 MB of text per second per single CPU core". Jak to wygląda w Fablo?

*) Źródło: http://sphinxsearch.com/about

Scottie2012-06-01

Scottie: w Fablo indeksujemy tak szybko, jak to jest potrzebne naszym klientom :-)

(inaczej mówiąc: prędkość indeksowania nie jest specjalnie istotna i nawet jej nie mierzymy, szczególnie że u nas nie ma znaczenia MB tekstu na sekundę, tylko co najwyżej liczba produktów na sekundę)

Jan Rychter2012-06-04