Jak efektywnie wyszukiwać
Od dawna używam engine wyszukiwania Sphinx Search (http://sphinxsearch.com) – wyniki uzyskiwane przy jego wykorzystaniu robią spore wrażenie.
Z moich doświadczeń przy blogfrogu – przeszukanie 500 000 tyś. wpisów (zaciągniętych z RSS + pełna treść wpisu ze strony HTML) zajmuje aktualnie ok. 0.02 s. Prze indeksowanie wszystkich wpisów, to ok. 25 minut pracy na jednej maszynie.
To, że wyniki te są dużo lepsze niż wszystkich konkurentów razem wziętych to jedna sprawa dla której warto zwrócić na to rozwiązanie uwagę.
Moim zdaniem ciekawszą i dającą większe możliwości funkcjonalnością jest wprowadzone niedawno wyszukiwanie rozproszone. Sphinx od wersji 0.98 potrafi automatycznie wysyłać zapytania jednocześnie do wielu serwerów – które przeszukują fragmenty indeksu. Wyniki są automatycznie scalane, usuwane są duplikaty.
W tym momencie zaczęło mi świtać….
Testy które przeprowadzano wskazują, że Sphinx bardzo często działa dużo szybciej nie tylko przy przeszukiwaniu pełnotekstowym, ale także przy wykonywaniu zapytań odnośnie atrybutów liczbowych dokumentów (np. zapytania ala SELECT … WHERE ID = 234).
Wydajność rozproszonych indeksów Sphinxa a wydajność rozproszonych baz danych MySQL – bez porównania.
Zaczyna to trochę w sposobie działania, przypominać BigTable – z tą różnicą ;) że sphinx nie potrafi przechowywać danych innych od liczbowych. Dlatego działa tak strasznie szybko.
Sphinx nie jest rozproszoną bazą danych, ale przy użyciu odpowiednich strategii cacheowania i składowania danych można pomyśleć o jego użyciu nawet w tej roli.
Pomysłów jest wiele.
Chciałbym aby nasz Ganglib wkrótce wzbogacił się wkrótce o jego obsługę.
Komentarze (0)