Sphinx è un motore di ricerca full-text gratuito e open source che può essere integrato in varie applicazioni Web per fornire risultati di ricerca rapidi e di alta qualità.
Questo articolo ti mostrerà come impostare un motore di ricerca Sphinx per indicizzare e cercare un database MariaDB di esempio su un'istanza del server Vultr CentOS 7. Ti darà alcune idee preliminari su come usare Sphinx nel tuo progetto.
Prerequisiti
- Distribuire una nuova istanza del server CentOS 7 dal pannello di controllo Vultr.
- Utilizzare un utente sudo non root per accedere dal proprio terminale SSH. Scopri come creare un utente sudo in questo articolo .
Passaggio 1: aggiorna il tuo sistema
sudo yum update -y && sudo reboot
Al termine del riavvio del sistema, utilizzare lo stesso utente sudo per accedere nuovamente.
Sphinx può essere utilizzato per cercare varie origini dati, come database SQL, file di testo semplice, file HTML, ecc. Qui, diamo un'occhiata a come utilizzare Sphinx per eseguire ricerche su un database MariaDB.
Installa MariaDB usando YUM:
sudo yum install mariadb mariadb-server
Avviare il servizio MariaDB:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
Per motivi di sicurezza, eseguire l'installazione sicura di MySQL:
sudo /usr/bin/mysql_secure_installation
Completare questa procedura secondo le seguenti istruzioni:
Enter current password for root (enter for none): Press Enter
Set root password? [Y/n]: Input Y, then press Enter
New password: Input a new password for root, press Enter
Re-enter new password: Input the same password again, then press Enter
Remove anonymous users? [Y/n]: Input Y, then press Enter
Disallow root login remotely? [Y/n]: Input Y, then press Enter
Remove test database and access to it? [Y/n]: Input Y, then press Enter
Reload privilege tables now? [Y/n]: Input Y, then press Enter
Al termine dell'installazione sicura di MySQL, dovrai impostare una nuova password per l'utente "root" di MySQL. In questo tutorial, mi riferirò ad esso come "la tua password".
Passaggio 3: installare l'ultima Sfinge
Per installare l'ultima versione di Sphinx, è necessario scaricare il pacchetto rpm corretto dal sito Web ufficiale di Sphinx:
cd ~
wget http://sphinxsearch.com/files/sphinx-2.2.10-1.rhel7.x86_64.rpm
sudo yum install sphinx-2.2.10-1.rhel7.x86_64.rpm
Passaggio 4: creare un database per il test
Utilizzare i seguenti comandi MySQL per creare un database denominato "test":
mysql -u root -p -e "CREATE DATABASE test"
Quando ti viene chiesto di fornire una password, inserisci quella che hai impostato in precedenza e poi premi Invio.
Ora, importa i dati di test da un file sql di esempio Sphinx:
mysql -u root -p test < /usr/share/doc/sphinx-2.2.10/example.sql
Ancora una volta, inserisci la stessa password e premi Invio per terminare l'importazione.
Apri il file di configurazione di Sphinx /etc/sphinx/sphinx.conf
:
sudo vi /etc/sphinx/sphinx.conf
Per ora, devi solo impostare il nome utente MySQL sql_user
e la password sql_pass
, che sarebbero:
sql_user = root
sql_pass = yourpassword
Salva ed esci:
:wq
Passaggio 6: avvia l'indicizzatore e cerca i daemon
Sia l'indicizzatore che la ricerca sono componenti importanti di Sphinx. L'indicizzatore si occupa della raccolta dei dati dall'origine dati e searchd è la parte del motore di ricerca che gestisce effettivamente le ricerche.
Assicurati di eseguire i seguenti comandi in modo ordinato, altrimenti riscontrerai errori.
sudo indexer --all
sudo searchd
Per aggiornare regolarmente lo stato dell'indice, creare un processo cron:
sudo crontab -e
Immettere la seguente voce:
0 * * * * /usr/bin/indexer --rotate --config /etc/sphinx/sphinx.conf --all
Salva ed esci:
:wq
Questo cron job aggiornerà lo stato dell'indice ogni ora.
Passaggio 7: testa il tuo motore di ricerca Sphinx
Puoi usare uno script Python predefinito per testare la tua configurazione di Sphinx:
python /usr/share/sphinx/api/test.py this is my test document
Questo comando cercherà "questo è il mio documento di prova" nel database MySQL di esempio e quindi mostrerà il risultato della ricerca.
Questo conclude questo tutorial. Sphinx include anche un'API di ricerca, che può essere utilizzata dai tuoi progetti PHP, Perl, Python, Ruby o Java. Maggiori informazioni sono disponibili sul sito ufficiale di Sphinx.