Tutorial di ricerca di testo completo di PostgreSQL

Tutorial di ricerca di testo completo di PostgreSQL
La ricerca completa di testo è supportata in PostgreSQL. La ricerca completa di testo viene utilizzata dai motori di ricerca, dai negozi e da molti altri siti Web in tutto il mondo.

Per impostazione predefinita, le ricerche sul database PostgreSQL sono esatte. Ciò significa che, quando gli utenti cercano "x y z", il database PostgreSQL cerca "x y z" nell'ordine esatto nei campi di una determinata tabella. Se c'è una leggera mancata corrispondenza, ad esempio, supponiamo che tu abbia "x y_z", il database non mostrerà alcun risultato.

Diamo un'occhiata a uno scenario di vita reale, allora sarai chiaro su cosa sia la ricerca completa di testo e qual è la necessità.

Diciamo che hai un negozio IT e l'utente ha cercato "desktop e laptop". Nessun problema lì. Ma in realtà hai qualsiasi prodotto che sia un desktop e un laptop? Hai anche un prodotto il cui titolo dice "xxx desktop e laptop" esattamente come l'utente ha cercato? Molto probabilmente no! La ricerca non mostrerebbe alcun risultato pertinente. L'utente probabilmente voleva elencare tutti i computer nel tuo negozio che può usare come desktop e laptop, molto probabilmente un tablet convertibile. Poiché la ricerca non ha mostrato alcun risultato all'utente, l'utente potrebbe pensare di essere esaurito o non lo hai nel tuo negozio IT. Ma hai molti tablet convertibili che possono essere utilizzati come desktop e un laptop nel database del tuo negozio. Se gli utenti non riescono a trovarlo, non otterrai alcuna vendita. Vuoi al tuo sito Web per elencare tutti i computer convertibili che hai in stock quando gli utenti eseguono una query di ricerca del genere. È qui che entra in gioco la ricerca di testo completo. Laddove una ricerca normale fallisce, la ricerca di testo completa salva.

In questo articolo, ti mostrerò come eseguire la ricerca di testo completa con PostgreSQL. Iniziamo.

Impostazione di PostgreSQL per la ricerca di testo completo

Prima di poter praticare la ricerca completa di testo su PostgreSQL insieme a me, devi impostare PostgreSQL con alcuni dati fittizi. In questa sezione, ti mostrerò come aggiungerli su PostgreSQL.

Innanzitutto, crea un nuovo database con il seguente comando:

$ createdb it_store

Nota: qui IT_Store è il nome del database.

Ora accedi al guscio postgresql del IT_Store database creato con il seguente comando:

$ PSQL IT_Store

Dovresti essere effettuato l'accesso ai postgresql IT_Store database come puoi vedere nello screenshot qui sotto.

Non ho intenzione di esagerare qui. Ho intenzione di creare un semplice prodotti Tabella per il nostro database IT Store. I campi di base di cui ho bisogno sono un Codice prodotto, Titolo del prodotto, Descrizione del prodotto.

Il codice SQL per la tabella dei prodotti è riportato di seguito:

Ora copia e incolla il comando sql per creare il prodotti Tabella nella shell PostgreSQL come mostrato nello screenshot seguente.

Una volta che hai finito, prodotti La tabella dovrebbe essere creata.

Ora ho intenzione di inserire alcuni prodotti nel prodotti tavolo. I comandi SQL sono riportati di seguito.

I prodotti vengono inseriti nel prodotti tavolo.

È possibile eseguire il seguente comando SQL per verificarlo:

$ Seleziona * dai prodotti;

Come puoi vedere, il prodotti sono nella tabella dei prodotti.

Ricerca completa di testo con PostgreSQL

Nella sezione precedente, ti ho mostrato come aggiungere dati fittizi al tuo database PostgreSQL. In questa sezione, ti mostrerò come eseguire la ricerca di testo completa su tali dati con PostgreSQL.

In PostgreSQL, si utilizzano due funzioni per eseguire la ricerca di testo completo. Sono to_tsvector () E to_tsquery (). Vediamo come funzionano e per usarli prima.

Un breve tour di to_tsvector () E to_tsquery () Funzioni

to_tsvector () La funzione rompe la stringa di input e crea token da essa, che viene quindi utilizzata per eseguire la ricerca completa di testo usando il to_tsquery () funzione.

Ora per capire cosa to_tsvector () La funzione fa a una stringa di input, apri la shell PostgreSQL ed esegui il comando seguente:

# Seleziona To_tsvector ('I Love Linux. Linux è un ottimo sistema operativo.');

Come puoi vedere l'output del to_tsvector () funzione nella sezione contrassegnata dello screenshot seguente, il to_tsvector () La funzione ha rotto le parole e ha assegnato alcuni numeri in esse.

Puoi usare to_tsquery () funzione come segue:

# Seleziona FieldNames da TableName
Dove to_tsvector (fieldname) @@ to_tsquery (condizioni)

Condizioni di to_tsquery () Funzione

IL to_tsquery () accetta le condizioni che utilizza per confrontare con l'output di to_tsvector () funzione.

Ad esempio, se stai cercando "laptop e desktop", dovresti mettere 'Laptop e desktop' A to_tsquery () funzione.

Per "laptop o desktop", la condizione dovrebbe essere 'Laptop | desktop '.

Ora entrerò nel nostro database IT Store per mostrarti alcuni esempi del mondo reale.

Cerchiamo un dispositivo convertibile che può essere utilizzato come desktop e laptop di cui ho parlato prima.

Esegui il seguente comando SQL per farlo:

Come puoi vedere, è stato trovato il computer corretto.

Puoi anche capovolgere i termini. Ad esempio, puoi cercare "laptop e desktop".

Il risultato corretto è ancora visualizzato.

Diciamo che l'utente desidera elencare tutti i computer desktop o laptop nel tuo negozio IT. La query è "desktop o laptop" e le condizioni di to_tsquery () la funzione dovrebbe essere 'Desktop | computer portatile' O 'Laptop | desktop '.

Il comando SQL è:

Come puoi vedere, tutti i computer dell'archivio IT sono elencati.

Diamo un'occhiata a un altro esempio. L'utente sta cercando tutti i laptop nel tuo negozio ma non quelli convertibili. La query dell'utente può essere 'Non convertibili laptop'. La condizione di to_tsquery () la funzione può essere '!convertibile e laptop '

Il comando SQL è:

Come puoi vedere, si trova il laptop corretto.

Hai notato una cosa? metto Laptop nel to_tsquery() funzione, ma non c'è Laptop Parola chiave nella descrizione del prodotto. Allora come ha trovato PostgreSQL? Bene, questa è la magia della ricerca completa del testo. Le parole chiave non devono essere esatte. PostgreSQL può persino gestire alcune parole plurali, tempi e molti altri.

Per impostazione predefinita, la ricerca di testo completa funziona solo in lingua inglese. Ma PostgreSQL fornisce supporto anche per alcune altre lingue. Controlla la documentazione PostgreSQL per ulteriori informazioni al riguardo.

È così che esegui la ricerca completa di testo su PostgreSQL. Grazie per aver letto questo articolo.