Sfinks (wyszukiwarka)

Sfinks
Deweloperzy Andrzej Aksjonow
Pierwsze wydanie 2001 ; 22 lata temu ( 2001 )
Wersja stabilna
Edit this on Wikidata 3.4.1 / 9 lipca 2021 ; 20 miesięcy temu ( 9 lipca 2021 )
Napisane w C++
System operacyjny Linux, Windows, Solaris, FreeBSD, NetBSD, Mac OS, AIX
Typ Szukaj i indeksuj
Licencja GPLv2 i komercyjne; zastrzeżony od wersji 3
Strona internetowa sphinxsearch.com _  Edit this on Wikidata

Sphinx to wyszukiwarka pełnotekstowa , która zapewnia aplikacjom klienckim funkcjonalność wyszukiwania tekstowego.

Przegląd

Sphinx może być używany jako samodzielny serwer lub jako silnik pamięci („SphinxSE”) dla rodziny baz danych MySQL. Uruchomiony jako samodzielny serwer Sphinx działa podobnie do DBMS i może komunikować się z MySQL , MariaDB i PostgreSQL poprzez ich natywne protokoły lub z dowolnym DBMS zgodnym z ODBC przez ODBC . MariaDB , rozwidlenie MySQL, jest dystrybuowane ze SphinxSE.

SphinxAPI

Jeśli Sphinx działa jako samodzielny serwer, możliwe jest użycie SphinxAPI do połączenia z nim aplikacji. Oficjalne implementacje API są dostępne dla PHP , Java , Perl , Ruby i Python . Dostępne są również nieoficjalne implementacje dla innych języków, a także różne wtyczki i moduły stron trzecich. Inne źródła danych mogą być indeksowane za pomocą potoku w niestandardowym XML .

SphinxQL

Demon wyszukiwania Sphinx obsługuje binarny protokół sieciowy MySQL i można uzyskać do niego dostęp za pomocą zwykłego interfejsu API MySQL i/lub klientów. Sphinx obsługuje podzbiór SQL znany jako SphinxQL. Obsługuje standardowe zapytania dotyczące wszystkich typów indeksów za pomocą SELECT, modyfikowanie indeksów w czasie rzeczywistym za pomocą INSERT, REPLACE i DELETE i nie tylko.

Sfinks SE

Sphinx może również zapewnić specjalny silnik przechowywania dla baz danych MariaDB i MySQL. Pozwala to tym MySQL, MariaDB komunikować się z searchd Sphinxa, aby uruchamiać zapytania i uzyskiwać wyniki. Indeksy Sphinx są traktowane jak zwykłe tabele SQL. Silnik pamięci masowej SphinxSE jest dostarczany z MariaDB.

Pola pełnotekstowe i indeksowanie

Sphinx jest skonfigurowany do badania zestawu danych za pomocą swojego indeksatora. Proces Indexer tworzy indeks pełnotekstowy (specjalna struktura danych , która umożliwia szybkie wyszukiwanie słów kluczowych) z podanych danych/tekstu. Pełny tekst pola to wynikowa treść, która jest indeksowana przez Sphinx; można je (szybko) przeszukiwać pod kątem słów kluczowych. Pola mają nazwy i można ograniczyć wyszukiwanie do pojedynczego pola (np. wyszukiwanie tylko według „tytułu”) lub podzbioru pól (np. tylko do „tytułu” i „streszczenia”). Format indeksu Sphinxa ogólnie obsługuje do 256 pól. Należy zauważyć, że oryginalne dane nie są przechowywane w indeksie Sphinx, ale są odrzucane podczas procesu indeksowania; Sphinx zakłada, że ​​przechowujesz te treści gdzie indziej.

Atrybuty

Atrybuty to dodatkowe wartości powiązane z każdym dokumentem, których można użyć do przeprowadzenia dodatkowego filtrowania i sortowania podczas wyszukiwania. Atrybuty są nazwane. W nazwach atrybutów nie jest rozróżniana wielkość liter. Atrybuty nie są indeksowane w pełnym tekście; są one przechowywane w indeksie bez zmian. Obecnie obsługiwane typy atrybutów to:

(od wersji 1.10-beta);

(od wersji 2.1.1-beta);

  • MVA, atrybuty wielowartościowe (listy o zmiennej długości 32-bitowych liczb całkowitych bez znaku).

Atrybuty JSON w Sfinksie

Sphinx, podobnie jak klasyczne bazy danych SQL , pracuje z tzw. ustalonym schematem , czyli zestawem predefiniowanych kolumn atrybutów. Działają one dobrze, gdy większość przechowywanych danych faktycznie ma wartości: mapowanie rzadkich danych na kolumny statyczne może być uciążliwe. Załóżmy na przykład, że prowadzisz porównywarkę cen lub serwis aukcyjny z wieloma różnymi kategoriami produktów. Niektóre atrybuty, takie jak cena lub dostawca, są identyczne we wszystkich towarach. Ale stamtąd, w przypadku laptopów, musisz również przechowywać wagę, rozmiar ekranu, typ dysku twardego, rozmiar pamięci RAM itp. I, powiedzmy, w przypadku łopat, prawdopodobnie chcesz przechowywać kolor, długość rączki i tak dalej. Jest to więc możliwe do zarządzania w ramach jednej kategorii, ale wszystkie odrębne pola, których potrzebujesz dla wszystkich towarów we wszystkich kategoriach, są legionem. Aby temu zaradzić, można użyć pola JSON. Wewnątrz atrybutu JSON nie potrzebujesz stałej struktury. Możesz mieć różne klucze, które mogą, ale nie muszą, być obecne we wszystkich dokumentach. Kiedy spróbujesz filtrować według jednego z tych kluczy, Sphinx zignoruje dokumenty, które nie mają klucza w atrybucie JSON i będzie działał tylko z tymi dokumentami, które go mają.

Licencja

Do wersji 3 Sphinx jest licencjonowany podwójnie ; albo:

  1. Powszechna Licencja Publiczna GNU wersja 2 lub
  2. licencjonowanie własnościowe jest dostępne dla przypadków użycia, które nie są objęte warunkami GNU GPLv2.

Od wersji 3 Sphinx stał się zastrzeżony, z obietnicą wydania swojego kodu źródłowego w przyszłości

Sphinx używa przykładów

  • Craigslist.org
  • Recruitment.aleph-graymatter.com
  • Tradebit.com
  • vBulletin.com
  • Rozszerzenie MediaWiki
  • Boardreader.com
  • OMBE.com
  • Limundo.com

Lista funkcji

Wydajność i skalowalność

  • Szybkość indeksowania do 10-15 MB/s na rdzeń i HDD.
  • Szybkość wyszukiwania ponad 500 zapytań/s przy 1 000 000 dokumentów/1,2 GB kolekcji przy użyciu 2-rdzeniowego systemu stacjonarnego z 2 GB pamięci RAM.
  • Największa znana instalacja wykorzystująca Sphinx, Boardreader.com, indeksuje 16 miliardów dokumentów.
  • Najbardziej ruchliwa znana instalacja, Craigslist, obsługuje ponad 300 000 000 zapytań dziennie i ponad 50 miliardów odsłon miesięcznie.

Zobacz też

Dalsza lektura

Linki zewnętrzne