Pełnotekstowe wyszukiwanie w PHP z wykorzystaniem Sphinxa
W Bibliotece Pythona, w artykule Pełnotekstowa wyszukiwarka Sphinx opisałem wyszukiwarkę Sphinx służącą do wydajnego wyszukiwania dokumentów. Zaletą tej aplikacji jest obsługa danych zawartych w bazach danych MySQL i PostgreSQL. Pełnotekstowe wyszukiwanie za pomocą Sphinxa jest znacznie wydajniejsze od odpowiednika dostępnego w bazie MySQL.
Sphinx posiada także bibliotekę dla języka PHP. Wystarczy pobrać paczkę źródłową i rozpakować. W katalogu api znajdziemy plik sphinxapi.php, który wystarczy skopiować do katalogu dostępnego dla serwera (np. katalog ze skryptem). Jeżeli dysponujemy własnym serwerem i mamy możliwość instalowania binarnych rozszerzeń, to możemy użyć PECL Sphinx - binarnego API, zgodnego z tym dostępnych razem ze Sphinxem. Binarne rozszerzenie z natury będzie szybsze od kodu PHP (oczywiście nie dotyczy to szybkości wykonywania wyszukiwań).
Sphinx i PHP
Dla tej samej struktury bazy danych i konfiguracji Sphinxa, co przedstawionej w artykule Pełnotekstowa wyszukiwarka Sphinx skrypt wykonujący wyszukanie wyglądałby następująco:<?php
include('sphinxapi.php');
$cl = new SphinxClient();
$cl->SetServer( "localhost", 3312 );
$cl->SetMatchMode( SPH_MATCH_ANY );
$result = $cl->Query( 'bmw' );
if ( $result === false ) {
echo "Query failed: " . $cl->GetLastError() . ".
";
}
else {
if ( $cl->GetLastWarning() ) {
echo "WARNING: " . $cl->GetLastWarning() . "
";
}
if ( ! empty($result["matches"]) ) {
foreach ( $result["matches"] as $doc => $docinfo ) {
echo "$doc
";
}
print_r( $result );
}
}
Build a custom search engine with PHP
Dokumentacja API PHP na wiki Sphinxa
Lista artykułów poświęconych Sphinxowi
Dokumentacja
Comment article