Implementazione della ricerca fuzzy
Per comprendere il concetto di ricerca fuzzy, dobbiamo creare una tabella. Qui, una tabella chiamata pittore viene creata con le colonne di id, nome, nazionalità, genere e nascita_year. Ogni colonna contiene rispettivamente i suoi tipi di dati:
>> Crea table pittore (id int, nome varchar, nazionalità varchar, genere varchar, nascita_year int);Dopo aver creato la tabella, è tempo di passare i dati nelle righe della relazione per farlo in uno stato funzionale. Viene utilizzata un'istruzione Insert per aggiungere i valori nella tabella:
>> Inserisci in pittore (id, nome, nazionalità, genere, nascita_year) valori (1, "John", "americano", "maschio", "2002"), (2, "Robert", "britannico", "maschio ',' 1990 '), (3,' Rosee ',' American ',' Female ',' 2000 '), (4,' Shomia ',' German ',' Female, '1982');Tutti i dati verranno inseriti come mostrato attraverso il messaggio che 4 righe vengono immesse nella tabella.
I dati inseriti possono essere visualizzati tramite l'istruzione selezionata utilizzata per recuperare tutte le righe e le colonne di una tabella pertinente:
>> Seleziona * dal pittore;Tutti i dati sono stati visualizzati. Come sapete, la ricerca sfocata è quella che causa la partita parziale e porta il risultato che è il più vicino. Quindi proveremo ogni esempio di ricerca fuzzy.
Esempio 1: ricerca tramite il filtro jolly
In questo esempio, prenderemo il record dalla tabella applicando una condizione sulla colonna Nome. Qualsiasi colonna può essere influenzata dalla ricerca fuzzy. Questa situazione può verificarsi quando conosci l'inizio del nome, ma non sei sicuro del finale, quindi usiamo questo operatore "%" alla fine del nome. Questo si chiama filtro per jolly. Questo simbolo può essere per qualsiasi personaggio. Quindi filtreremo i risultati in cui il nome dovrebbe iniziare con "Rob". La query contiene l'istruzione Seleziona per recuperare la riga del nome corrispondente. Principalmente mentre appliciamo qualsiasi condizione dopo la clausola Where, utilizziamo un simbolo uguale '='. Ma, poiché non siamo sicuri dei risultati, useremo "come" invece di quel simbolo "=":
>> Seleziona * dal pittore in cui nome come "Rob%";Il valore risultante mostra che si ottiene una singola riga. Che corrisponde al nome. Allo stesso modo, useremo l'operatore '%' ad entrambe le estremità. In modo che il filtro cercherà il nome del pittore, il cui nome può iniziare o terminare con qualsiasi combinazione dei personaggi:
>> Seleziona * dal pittore in cui nome come "%h%";Questo comando ha due righe con l'alfabeto "H" al centro. In questo modo, puoi vedere che la corrispondenza della stringa fuzzy funziona in PostgreSQL.
Esempio 2:
Usando lo stesso concetto, se la parola che abbiamo usato come input 'ro', 'b', viene rimossa, vedrai che quelle righe saranno recuperate il cui nome inizia con RO:
>> Seleziona * dal pittore in cui nome come "ro%";Quindi, puoi vedere che sono selezionate due righe. Per filtrare nuovamente i risultati, possiamo usare questo operatore in due modi applicandolo in due colonne. Ad esempio, il nome che inizia con la stessa parola "ro%" verrà cercato, ma la colonna nazionalità verrà applicata con il filtro della riga a partire dal nome della nazionalità "A%".
>> Seleziona * dal pittore in cui nome come "ro%" e nazionalità come "a%";Pertanto, una singola riga verrà selezionata in base alla condizione.
Esempio 3: ricerca utilizzando i trigrammi
PostgreSQL ha un'ottima estensione utilizzata per abilitare l'estensione PG_TRGM. Questa estensione viene utilizzata per portare alcune caratteristiche della ricerca di stringhe fuzzy. I trigrammi sono formati quando una stringa viene suddivisa in un gruppo di tre lettere consecutivamente. Innanzitutto, dobbiamo installare l'estensione in PostgreSQL. Perché senza abilitare l'estensione, non possiamo applicare la ricerca fuzzy in modi diversi:
>> Crea estensione pg_trgm;Un'estensione viene aggiunta al database. Ora applicheremo alcuni comandi utilizzati in base alle estensioni installate. In questo tipo di ricerca, utilizziamo la parola chiave "somiglianza" per cercare la corrispondenza più vicina possibile fornendo la probabilità di intervallo che mostra quanto siano simili le stringhe sulla scala tra 0 e 1. Nel seguente esempio, cercheremo dalla tabella applicando una clausola dove con somiglianza come "Johr", quindi la quarta lettera nella parola viene cambiata. La ricerca sarà secondo le lettere morbide:
>> Seleziona * dal pittore dove la somiglianza (nome, 'johr')> 0.4;Il risultato conterrà la riga con il nome della colonna simile a John che è John nella tabella.
Ora applicheremo il concetto di somiglianza alla colonna nazionalità nelle righe contenenti "an" nella stringa presente nei dati PostgreSQL. Il risultato sarà limitato alle 2 righe:
>> Seleziona * dall'ordine del pittore per somiglianza (nazionalità, 'an') limite 2;Il risultato conterrà solo due righe in quanto abbiamo applicato il limite. Quindi quelle file che hanno la nazionalità di contenere "e" in esse saranno visualizzate.
Esempio 4: ricerca tramite algoritmi fonetici
Un altro modo di cercare è l'uso di algoritmi fonetici. Questi algoritmi utilizzano le regole utilizzate per rappresentare una stringa utilizzando un breve codice. A tale scopo, PostgreSQL utilizza un'estensione da installare in modo da poter abilitare il funzionamento della ricerca. Questa estensione è un matcher di stringhe sfocate:
>> crea estensione fuzzystrmatch;Dopo aver installato l'estensione, utilizzeremo qualsiasi funzionalità dell'estensione. Ad esempio, useremo una funzione nota come metafone.
Metafono: Questo algoritmo viene utilizzato per restituire il codice di diverse lunghezze. Questa è come la semplice funzione che utilizziamo in PostgreSQL. Allo stesso modo, possiamo passare argomenti a questa funzione. Ad esempio, viene specificata la lunghezza che restituisce il valore a quella lunghezza.
Nell'esempio, selezioneremo ID, nome e una nuova colonna con il metafono del nome che accorcerà il nome del pittore per formare un'abbreviazione. La clausola Where conterrà una condizione per cercare la nazionalità pari all'americano:
>> Seleziona ID, nome, metafone (nome, 10) dal pittore dove nazionalità = limite "americano" 2;Puoi vedere che durante l'esecuzione, la colonna del metafone conterrà le forme abbreviate dei nomi del pittore.
Conclusione
Questo articolo getta luce alla ricerca parziale dei dati applicando le corde fuzzy. Se l'utente non è a conoscenza dei nomi completi o del nome parziale, può facilmente ottenere le informazioni sul record utilizzando questo tipo di ricerca. Abbiamo usato esempi elementari riguardanti sia gli algoritmi che le estensioni in PostgreSQL. Speriamo che tu abbia trovato questo articolo utile. Dai un'occhiata ad altri articoli di suggerimento Linux per ulteriori suggerimenti e informazioni.