PostgreSQL

Eksempler på PostgreSQL-søgning i fuldtekst

Eksempler på PostgreSQL-søgning i fuldtekst
Enhver database skal have en effektiv og alsidig søgefunktion. Når det refererer til databaser, er PostgreSQL en mester i alt håndværk. Det kombinerer alle de ting, du er blevet elsket med SQL med en række ikke-SQL-databasefunktioner. Enhver af disse ikke-SQL-funktioner, såsom JSONB-informationssorteringen, er fantastiske, og du behøver ikke engang at prøve en anden database. Fuldtekstsøgning er blandt de nyeste ikke-SQL-funktioner, der er indarbejdet i PostgreSQL. Er PostgreSQL's komplette tekstsøgning fuldstændig funktionel, eller vil du have et særskilt søgeindeks? Hvis du på en eller anden måde kan udvikle en komplet tekstsøgning, der er frataget at tilføje endnu en kodeomslag, ville det være en fantastisk idé. Du er allerede bekendt med mønstersøgning i MySQL-databasen. Så lad os først se på dem. Åbn PostgreSQL kommandolinjeskal i dit computersystem. Skriv servertitel, databasenavn, portnummer, brugernavn og adgangskode til den specifikke bruger bortset fra standardindstillinger. Hvis du har brug for at slog med standardovervejelser, skal du lade alle valg være tomme og trykke på Enter hver mulighed. I øjeblikket er din kommandolinjeskal udstyret til at arbejde på.

For at forstå begrebet fuldtekstsøgning skal du huske viden om mønstersøgning via LIKE-nøgleordet. Så lad os antage en tabel 'person' i databasens 'test' med følgende poster i den.

>> VÆLG * FRA person;

Lad os antage, at du vil hente posterne i denne tabel, hvor kolonnen 'navn' har tegnet 'i' i nogen af ​​dens værdier. Prøv nedenstående SELECT-forespørgsel, mens du bruger LIKE-klausulen i kommandoskallen. Fra nedenstående output kan du se, at vi kun har 5 poster for denne særlige karakter 'i' i kolonnen 'navn'.

>> VÆLG * FRA personen HVOR navn LIKE '% i%';

Brug af Tvsector:

Nogle gange nytter det ikke at bruge LIKE Keyword til at foretage en hurtig mønstersøgning, selvom ordet er der. Måske overvejer du at bruge standardudtryk, og selvom dette er et muligt alternativ, er regulære udtryk både stærke og træg. At have en proceduremæssig vektor for hele ord i en tekst, en beskrivelse af disse ord på folkemunne, er en meget mere effektiv måde at løse dette problem på. Konceptet med komplet tekstsøgning og datatypen tsvector blev oprettet for at svare på det. Der er to metoder i PostgreSQL, der gør lige hvad vi vil:

Eksempel 01:

Lad os starte med en simpel illustration af oprettelse af en vektor. Antag at du vil lave en vektor til strengen: ”Nogle mennesker har krøllet brunt hår gennem korrekt børstning.”. Så du er nødt til at skrive en to_tvsector () funktion sammen med denne sætning i parenteserne af en SELECT-forespørgsel som vedlagt nedenfor. Fra nedenstående output kan du se, at det ville give en vektor af referencer (filpositioner) for hvert token, og også hvor udtryk med lille kontekst, som artikler () og konjunktioner (og, eller), bevidst ignoreres.

>> VÆLG til_tsvector ('Nogle mennesker har krøllede brune hår gennem korrekt børstning');

Eksempel 02:

Antag, at du har to dokumenter med nogle data i dem begge. For at gemme disse data bruger vi nu et reelt eksempel på at generere tokens. Antag at du har oprettet en tabel 'Data' i din database 'test' med nogle kolonner i den ved hjælp af nedenstående CREATE TABLE-forespørgsel. Glem ikke at oprette en TVSECTOR-type kolonne med navnet 'token' i den. Fra nedenstående output kan du se på den tabel, der er oprettet.

>> CREATE TABLE Data (Id SERIAL PRIMARY KEY, info TEXT, token TSVECTOR);

Nu viser det os, at vi tilføjer de samlede data for begge dokumenter i denne tabel. Så prøv nedenstående INSERT-kommando i din kommandolinjeskal for at gøre det. Endelig er posterne fra begge dokumenter tilføjet med succes i tabellen 'Data'.

>> INSERT INTO Data (info) VÆRDIER ('To forkerte ting kan aldrig gøre en ret.'), (' Han er den, der kan spille fodbold.'), (' Kan jeg spille en rolle i dette?'), (' Smerten inde i en kan ikke forstås '), (' Bring fersken i dit liv);

Nu skal du kolonisere token-søjlen i begge dokumenter med deres specifikke vektor. I sidste ende udfylder en simpel UPDATE-forespørgsel tokens-kolonnen med deres tilsvarende vektor for hver fil. Så du skal udføre nedenstående forespørgsel i kommandoskallen for at gøre det. Outputtet viser, at opdateringen endelig er foretaget.

>> UPDATE Data f1 SET token = to_tsvector (f1.info) FRA Data f2;

Nu hvor vi har det hele på plads, lad os vende tilbage til vores illustration af "kan man" med en scanning. At to_tsquery med AND-operatøren, som tidligere nævnt, gør ingen forskel mellem filernes placering i filerne som vist fra output angivet nedenfor.

>> SELECT Id, info FROM Data WHERE token @@ to_tsquery ('can & one');

Eksempel 04:

For at finde ord, der er "ved siden af" hinanden, vil vi prøve den samme forespørgsel med '<->'operatør. Ændringen vises i nedenstående output.

>> SELECT Id, info FROM Data WHERE token @@ to_tsquery ('kan <-> en');

Her er et eksempel på intet øjeblikkeligt ord ved siden af ​​et andet.

>> SELECT Id, info FROM Data WHERE token @@ to_tsquery ('one <-> smerte');

Eksempel 05:

Vi finder de ord, der ikke er umiddelbart ved siden af ​​hinanden ved at bruge et tal i afstandsoperatøren til at referere til afstand. Nærheden mellem 'bringe' og 'liv er 4 ord bortset fra det viste billede.

>> VÆLG * FRA data HVOR token @@ til_tsquery ('bring <4> liv');

For at kontrollere nærhed mellem ordene for næsten 5 ord er der vedhæftet nedenfor.

>> VÆLG * FRA data WHERE token @@ til_tsquery ('forkert <5> ret');

Konklusion:

Endelig har du gjort alle de enkle og komplicerede eksempler på fuldtekstsøgning ved hjælp af To_tvsector og to_tsquery-operatorer og -funktioner.

Mus Styr og administrer musebevægelse mellem flere skærme i Windows 10
Styr og administrer musebevægelse mellem flere skærme i Windows 10
Dual Display Mouse Manager lader dig kontrollere og konfigurere musebevægelse mellem flere skærme ved at bremse dens bevægelser nær grænsen. Windows 1...
Mus WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
Hvis du vil forbedre standardfunktionerne for din musemarkør, skal du bruge freeware WinMouse. Det tilføjer flere funktioner, der hjælper dig med at f...
Mus Museklik på venstre museknap fungerer ikke på Windows 10
Museklik på venstre museknap fungerer ikke på Windows 10
Hvis du bruger en dedikeret mus med din bærbare computer eller stationære computer, men musens venstre-klik-knap fungerer ikke på Windows 10/8/7 af en...