WordPress è un ottimo software: alimenta milioni di siti Web anche se la sua funzione di ricerca nativa non è così potente come potrebbe. Infatti, Automattic utilizza una soluzione diversa per la ricerca su WordPress.com. Dai un'occhiata a un ottimo post sul blog e alla presentazione sul post del blog e alla presentazione su Elasticsearch di Automattic.
Cosa c'è di sbagliato nella ricerca di WordPress? In poche parole, è una soluzione ingenua con una semplice query MySQL per la ricerca.
PIACE
, con %% Query
significa che non viene utilizzato alcun indice. Senza indicizzazione, può rapidamente uccidere il tuo database su un sito ad alto traffico se hai un sacco di ricerche.Pensiamo a un sito lirico in cui gli utenti possono ricordare diverse parole della canzone e vogliono trovare i testi di un'intera canzone. Per rendere questo più complesso, diciamo che gli utenti potrebbero non essere un madrelingua inglese e stanno cercando di trovare una canzone inglese. È molto probabile che si commetta errori di battitura quando si digita in inglese e, senza una ricerca fuzzy, si perdono quegli utenti.
Supereremo questi problemi utilizzando un motore di ricerca per indicizzare e cercare i nostri dati. Possiamo pensare di usare MySQL Full Text Search o qualcosa di simile. Mentre è possibile, potrebbe non essere la soluzione migliore. Devi definire uno schema, devi modificare il database di WordPress predefinito, aggiungere indici e così via.
Quando si desidera reindicizzare una tabella grande, è possibile introdurre un blocco e impedire al sito di accettare un nuovo post o invio. Inoltre, è ancora un successo per il tuo database MySQL. Nel sito ad alto traffico con molte ricerche, può rallentare il database. Quando si utilizza un prodotto come ElasticSearch, si eliminano queste cose. È veloce, efficiente, ottimizzato per la ricerca con molte funzionalità extra ed è anche senza schemi che significa che è possibile aggiungere, rimuovere facilmente i campi.
In questo tutorial, andremo oltre i seguenti due passaggi:
La cosa buona è che il plugin ricadrà alla ricerca WordPress predefinita se il server ElasticSearch non funziona.
Devi usare un VPS per installare un motore di ricerca su di esso. Se si utilizza un normale servizio di hosting condiviso, è possibile utilizzare OpenShift come server alternativo per installare il nostro motore di ricerca in un secondo momento.
ElasticSearch è un motore di ricerca e analisi flessibile, potente, distribuito e in tempo reale. È possibile inviare i dati in esso, e avere indice e disponibile per la ricerca rapidamente. È altamente ottimizzato per il suo lavoro: ricerca. Oltre a ciò, i risultati includono un valore di quanto i dati corrispondessero al termine di ricerca. ElasticSearch arriva anche con una API REST che ti permette di interrogare facilmente la ricerca o giocarci durante il test / sviluppo con uno strumento come Sense.
Vai alla pagina iniziale se vuoi saperne di più. Il loro sito è ampiamente documentato. Per ulteriori indicazioni, controlla la pagina su Stack Overflow.
A seconda della distribuzione Linux, potrebbe essere necessario fare riferimento alla sua documentazione per vedere come installare ElasticSearch. In alternativa, puoi seguire il tutorial generico di ElasticSearch.
$ wget -O - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | apt-key add - $ sudo sh -c 'echo "deb http://packages.elasticsearch.org/elasticsearch/1.1/debian stable main"> /etc/apt/sources.list' $ sudo apt-get update # Noi bisogno di Java per ElasticSearch $ sudo apt-get install openjdk-7-jre-headless -y $ sudo apt-get install elasticsearch # Esegui elasticsearch all'avvio $ sudo update-rc.d elasticsearch defaults 95 10 $ sudo / etc / init. d / elasticsearch start
$ rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch$ vim /etc/yum.repos.d/elastic.repo
Dopo l'installazione, inseriscilo nel file di configurazione ElasticSearch:
[elasticsearch-1.1] name = Elasticsearch repository per 1.1.x packagesbaseurl = http: //packages.elasticsearch.org/elasticsearch/1.1/centosgpgcheck=1gpgkey=http: //packages.elasticsearch.org/GPG-KEY-elasticsearchenabled=1
Salva il file. E continua a installare con yum
. Si noti che dobbiamo installare Java 6 dal repository di terze parti se il repository CentOS non ha Java 6.
$ sudo yum install elasticsearch # Effettua il roon all'avvio $ sudo / sbin / chkconfig --add elasticsearch # Abbiamo bisogno di Java6 + per ElasticSearch # Ignora questa sezione se avevi Java6 + $ sudo rpm --import http://apt.sw.be /RPM-GPG-KEY.dag.txt $ sudo wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm $ sudo rpm -Uhv rpmforge -release-0.5.2-2.el6.rf.x86_64.rpm $ sudo yum install java-1.6.0-openjdk.x86_64 -y # Avvia $ sudo service elasticsearch start
Dopo aver avviato ElasticSearch, puoi verificare che funzioni correttamente visitando il tuo dominio sulla porta 9200 come yourdomain.com:9200 nel browser o eseguendo a arricciare
richiesta.
$ curl 127.0.0.1:9200 "ok": true, "status": 200, "nome": "Jessica Jones", "versione": "numero": "0.90.7", "build_hash": "36897d07dadcb70886db7f149e645ed3d44eb5f2 "," build_timestamp ":" 2013-11-13T12: 06: 54Z "," build_snapshot ": false," lucene_version ":" 4.5.1 "," tagline ":" Sai, per la ricerca "
Se non si dispone di un VPS e si desidera ancora utilizzarlo, è possibile utilizzare una piattaforma come OpenShift per installare ElasticSearch su di esso. Se hai installato ElasticSearch sul tuo server, passa alla sezione successiva.
ElasticSearch può essere installato facilmente tramite il download del pacchetto software e l'esecuzione del file binario. Java 6 è l'unica dipendenza che ha. OpenShift ci fornisce una sorta di server virtuale su cui possiamo installare il nostro software.
Registrati per un account su https://www.openshift.com/. Quindi, accedi alla tua dashboard o inserisci questo URL https://openshift.redhat.com/app/console/applications dopo aver effettuato l'accesso. Fai clic su "Applicazioni", digita "Fai da te" per filtrare la casella.
Quindi fai clic sul titolo "Fai da te 0.1" per aggiungere l'applicazione al tuo account. Ciò significa che configureremo noi stessi l'applicazione. Da qui, avrai la possibilità di nominare la tua app e ottenere un sottodominio come appnamesubdomain.rhccloud.com. Attendi un momento per il completamento del provisioning, quindi fai clic su "Continua alla pagina di panoramica dell'applicazione" per andare alla pagina di panoramica dell'applicazione.
In quella pagina, vedrai il nome di dominio della tua applicazione. Ci servirà in seguito per configurare l'URL del server ElasticSearch. In basso a destra, puoi vedere "Accesso remoto". Con questo accesso, saremo in grado di eseguire il comando shell e installare cosa proprio come facciamo con un normale VPS. Raccoglieremo le informazioni SSH per l'accesso remoto nella nostra app e installeremo ElasticSearch su di esso.
Notare la ssh [email protected]
comando, lo useremo per l'accesso remoto al nostro server su OpenShift. diy-notyim.rhcloud.com
è il tuo indirizzo del server, ssh è il comando che usiamo per l'accesso remoto.
Per accedere tramite SSH, devi fornire la tua chiave pubblica a OpenShift. Clicca sul Ambientazione scheda e quindi fare clic su Aggiungi una nuova chiave ...
Basta copiare e incollare il contenuto della tua chiave pubblica in esso. La tua chiave pubblica è di solito in ~ / .Ssh / id_rsa.pub
. Se non hai familiarità con le chiavi pubbliche, leggi questi tutorial su come generarli:
Dopo aver aggiunto la chiave sul sito Web di OpenShift, emettere questo comando per connettersi al suo interno. Nota che il tuo indirizzo sarà diverso dal mio.
ssh [email protected]Sarai accolto con una schermata come questa:
************************************************** ******************* Stai accedendo a un servizio che è destinato all'uso da parte di utenti autorizzati. Se non si dispone dell'autorizzazione, interrompere l'uso in una sola volta. Qualsiasi utilizzo dei servizi è soggetto ai termini applicabili dell'accordo che possono essere trovati su: https://www.openshift.com/legal ******************* ************************************************** Benvenuto nella shell di OpenShift Questa shell ti assisterà nella gestione delle applicazioni di OpenShift. !!! IMPORTANTE !!! IMPORTANTE !!! IMPORTANTE !!! L'accesso alla shell è piuttosto potente ed è possibile che tu accidentalmente danneggi la tua applicazione. Procedi con cura! Se la situazione peggiore dovesse peggiorare, distruggi la tua applicazione con "rhc app delete" e ricreala !!! IMPORTANTE !!! IMPORTANTE !!! IMPORTANTE !!! Digita "help" per maggiori informazioni. [diy-notyim.rhcloud.com 536ea3e4500446d9db000279] \>
Scaricheremo e installeremo ElasticSearch manualmente. Tuttavia, dobbiamo archiviare il file di download nella cartella $ OPENSHIFT_DATA_DIR
a causa della sua persistenza tra la distribuzione. Durante l'implementazione, OpenShift rimuove quasi tutti i file e le cartelle e utilizza le istruzioni di build nel gancio dell'applicazione per creare e distribuire l'applicazione.
Si noti che OpenShift ha una cartella speciale che viene utilizzata per memorizzare dati persistenti tra più distribuzioni. $ OPENSHIFT_DATA_DIR
è il percorso di memorizzazione delle variabili ambientali. Emettere sotto il comando per scaricare, installare ed eseguire ElasticSearch.
$ cd $ OPENSHIFT_DATA_DIR $ wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.1.1.tar.gz $ tar xvf elasticsearch-1.1.1.tar.gz $ cd elasticsearch-1.1.1Una volta che sei nella cartella
elasticsearch-1.1.1
, devi cambiare le chiavi e i valori nel file config / elasticsearch.yml
. È possibile utilizzare nano o vi / vim per modificare il file e modificare tali valorinetwork.host: $ OPENSHIFT_DIY_IP transport.tcp.port: 3306 http.port: $ OPENSHIFT_DIY_PORT discovery.zen.ping.multicast.enabled: false discovery.zen.ping.unicast.hosts: []Una volta modificato e salvato. Avvia ElasticSearch.
# Interrompe l'app fai-da-te predefinita per rilasciare la porta $ ctl_app stop $ bin / elasticsearch &Aspetta momentaneamente che si avvii. Da qui, il tuo URL ElasticSearch può essere raggiunto tramite il dominio che abbiamo impostato in precedenza. Nel mio caso, è http://diy-notyim.rhccloud.com. Si noti che non usiamo la porta predefinita 9200 perché OpenShift non ci consente di collegarci ad esso; quindi, usiamo la porta 8080 che è impostata dalla variabile ambientale
$ OPENSHIFT_DIY_PORT
. Ci leghiamo solo per il nostro IP interno e OpenShift inoltrerà l'IP pubblico alla porta 80 per noi. Per questo motivo, è possibile accedere direttamente all'URL http://diy-notyim.rhccloud.com senza specificare alcuna porta. Dobbiamo anche smettere di app interna fai da te con ctl_app
fermarsi per rilasciare la porta prima di eseguire elasticsearch
.Esecuzione di ElasticSearch su OpenShift, associazione alla porta 8080 anziché alla porta 9200 Scarica e installa il plug-in dal repository dei plugin di WordPress. Estrailo nel wp-content / plugins
cartella e attivarlo. O se usi wp-cli
, è facile come torta.
wp installa fantastic-elasticsearch wp attiva fantastic-elasticsearch
Ricaricando il dashboard di WordPress, dovrebbe apparire una nuova voce di menu per ElasticSearch. Da qui, configuriamolo.
La maggior parte dei campi sono descritti chiaramente per aiutarti a configurarlo. Di seguito sono riportati alcuni riepiloghi.
Questa scheda contiene le impostazioni per abilitare l'uso di ElasticSearch o meno. Questa scheda ci consente anche di selezionare quali categorie devono essere contenute in ElasticSearch.
Configura il server ElasticSearch e il nome dell'indice. Il nome dell'indice è come il nome del database in MySQL. Hai un server MySQL e più database al suo interno. È possibile utilizzare qualsiasi nome lì fino a quando viene utilizzato da un servizio diverso.
Se ElasticSearch è installato sulla stessa macchina e usa le impostazioni predefinite, è possibile lasciare vuoto il nome del server; altrimenti, specifica il tuo URL. Ad esempio, se avessi usato OpenShift come descritto, inserirò http://diy-notyim.rhcloud.com/ come URL del server.
È possibile scegliere quali campi tipo, campo postale o campi tassonomia essere indicizzati da ElasticSearch. Una volta che un elemento è indicizzato, sarà ricercabile tramite ElasticSearch. Puoi scegliere di indicizzare post, pagine, campi personalizzati o qualsiasi tipo di post personalizzato in base alle tue esigenze.
Questa è una cosa importante per ordinare il risultato. Ad esempio, una corrispondenza nel titolo del post può essere considerata più esatta di una corrispondenza nel contenuto del post. Pertanto dovremmo impostare un valore di punteggio più piccolo per i contenuti dei post. Allo stesso modo, se una corrispondenza del tag è più preziosa di una corrispondenza nel titolo, imposteremo un valore più alto per post_tag
.
Questo si riferisce al numero di caratteri che possono essere scambiati per abbinare le parole. Ad esempio: se ho cercato Lonux
, poi Linux
si considera ancora una corrispondenza: L (i) nux-> L (o) nux. Più piccolo è il numero, migliore è la prestazione. Non impostare troppo alto. Penso che lo 0-2 sia il più ragionevole.
Una volta che tutto è configurato o modificato, è il momento di applicare la modifica. Quando fai clic su re-index, dovrebbe mostrare qualcosa come di seguito:
Al termine dell'indicizzazione. Prova a cercare qualcosa sul tuo sito, cerca una frase, attiva / disattiva la ricerca tra default e ElasticSearch per vedere la differenza. Ecco il risultato della mia ricerca con la ricerca WordPress predefinita:
Nessun risultato durante la ricerca di zsh arch linux con la ricerca predefinitaEcco il risultato della ricerca con ElasticSearch.
Un sacco di post con ElasticSearchCon pochi semplici passaggi, abbiamo installato un potente motore di ricerca sul nostro sito. Più accurato è il risultato della ricerca, migliore sarà l'esperienza dei nostri visitatori. Se il tuo sito ha un traffico intenso e una singola installazione di ElasticSearch non è in grado di gestire la ricerca, puoi aggiungere più nodi a ElasticSearch per eseguire una ricerca distribuita.
Nota che, per impostazione predefinita, ElasticSearch non viene fornito con l'autenticazione, ma probabilmente dovresti utilizzare un firewall per limitare l'accesso a ElasticSearch dagli indirizzi IP pubblici. O forse un modo migliore è quello di legare ElasticSearch all'IP interno e renderlo disponibile solo tramite LAN.
Per favore lascia un commento e facci sapere come funziona il tuo sito dopo aver installato questo plugin.