Som standard er søk på PostgreSql -databasen nøyaktig. Hva det betyr er at når brukere søker etter 'X Y Z', ser PostgreSQL -databasen etter 'X Y Z' i nøyaktig rekkefølge i feltene til en viss tabell. Hvis det er et lite misforhold, for eksempel la oss si at du har 'x y_z', vil databasen ikke vise noe resultat.
La oss se på et virkelig livsscenario, så vil du være tydelig på hva fulltekstsøk er og hva som er behovet for det.
La oss si at du har en IT -butikk, og brukeren søkte etter 'Desktop and Laptop'. Ikke noe problem der. Men har du faktisk noe produkt som er et skrivebord og en bærbar PC? Har du til og med et produkt hvis tittel sier 'XXX Desktop and Laptop' nøyaktig som brukeren søkte etter? Sannsynligvis nei! Søket vil ikke vise noen relevante resultater. Brukeren ønsket sannsynligvis å liste opp alle datamaskiner i butikken din som han eller hun kan bruke som skrivebord og en bærbar PC, mest sannsynlig et konvertibelt nettbrett. Siden søket ikke klarte å vise noe resultat for brukeren, kan brukeren tro at du er utsolgt, eller du ikke har det i IT -butikken din. Men du har mange konvertible nettbrett som kan brukes som skrivebord og en bærbar datamaskin i butikkens database. Hvis brukerne ikke finner det, får du ikke noe salg. Du vil at nettstedet ditt skal liste opp alle konvertible datamaskiner du har på lager når brukere gjør et søk som det. Det er her fulltekstsøk kommer inn. Der et vanlig søk mislykkes, redder fulltekstsøk.
I denne artikkelen vil jeg vise deg hvordan du utfører fulltekstsøk med PostgreSQL. La oss komme i gang.
Sette opp PostgreSQL for fulltekstsøk
Før du kan øve på fulltekstsøk på PostgreSQL sammen med meg, må du sette opp PostgreSQL med noen dummy -data. I denne delen vil jeg vise deg hvordan du legger til disse på PostgreSql.
Opprett først en ny database med følgende kommando:
$ createB it_storeMerk: Her it_store er databasenavnet.
Logg deg nå på PostgreSql -skallet til it_store Database du opprettet med følgende kommando:
$ psql it_storeDu bør være logget inn på PostgreSql it_store Database som du kan se på skjermdumpen nedenfor.
Jeg kommer ikke til å gå over bord her. Jeg skal lage en enkel Produkter Tabell for vår IT Store -database. Det grunnleggende feltet jeg trenger er en Produkt ID, Produkttittel, produktbeskrivelse.
SQL -koden for produkttabellen er gitt nedenfor:
Kopier og lim inn SQL -kommandoen for å opprette Produkter Tabell inn i PostgreSql -skallet som vist på skjermdumpen nedenfor.
Når du er ferdig, Produkter Tabellen skal opprettes.
Nå skal jeg sette inn noen produkter i Produkter bord. SQL -kommandoene er gitt nedenfor.
Produktene settes inn i Produkter bord.
Du kan kjøre følgende SQL -kommando for å bekrefte at:
$ Velg * fra produkter;Som du kan se, Produkter er i produkttabellen.
Fulltekstsøk med PostgreSql
I den tidligere delen viste jeg deg hvordan du legger til dummy -data i PostgreSQL -databasen. I denne delen vil jeg vise deg hvordan du utfører fulltekstsøk på disse dataene med PostgreSQL.
I PostgreSQL bruker du to funksjoner for å utføre fulltekstsøk. De er to_tsVector () og to_tsquery (). La oss se hvordan de fungerer og å bruke dem først.
En rask tur på to_tsVector () og to_tsquery () Funksjoner
to_tsVector () Funksjonen bryter opp inngangsstrengen og oppretter symboler ut av den, som deretter brukes til å utføre fulltekstsøk ved hjelp av to_tsquery () funksjon.
Nå for å forstå hva to_tsVector () Funksjon gjør en inngangsstreng, åpne opp PostgreSQL -skallet og kjør følgende kommando:
# Velg to_tsvector ('Jeg elsker linux. Linux er et flott operativsystem.');Som du kan se utgangen fra to_tsVector () funksjon i den markerte delen av skjermdumpen nedenfor, to_tsVector () Funksjonen brøt opp ordene og tildelte noen tall i dem.
Du kan bruke to_tsquery () funksjon som følger:
# Velg feltnavn fra tablenavnBetingelser for to_tsquery () Funksjon
De to_tsquery () aksepterer forhold som den bruker for å sammenligne med utgangen fra to_tsVector () funksjon.
For eksempel, hvis du leter etter 'bærbar PC og Desktop', bør du legge 'Laptop & Desktop' til to_tsquery () funksjon.
For 'bærbar eller skrivebord', skal tilstanden være 'bærbar PC | Desktop '.
Nå vil jeg gå inn i IT -butikkdatabasen vår for å vise deg noen eksempler på ekte verden.
La oss søke etter en konvertibel enhet som kan brukes som stasjonær og bærbar PC som jeg snakket om tidligere.
Kjør følgende SQL -kommando for å gjøre det:
Som du ser ble riktig datamaskin funnet.
Du kan også vende vilkårene. For eksempel kan du søke etter 'Laptop & Desktop'.
Riktig resultat vises fortsatt.
La oss si at brukeren vil liste opp alle skrivebordet eller bærbare datamaskiner i IT -butikken din. Spørringen er 'Desktop eller bærbar PC' og tilstanden til to_tsquery () funksjon skal være 'Desktop | laptop' eller 'bærbar PC | Desktop '.
SQL -kommandoen er:
Som du ser er alle datamaskiner i IT -butikken oppført.
La oss se på et annet eksempel. Brukeren leter etter alle bærbare datamaskiner i butikken din, men ikke de konvertible. Brukerforespørselen kan være 'Ikke konvertible bærbare datamaskiner'. Tilstanden til to_tsquery () funksjon kan være '!konvertible og bærbare datamaskiner '
SQL -kommandoen er:
Som du ser er riktig bærbar datamaskin funnet.
Har du lagt merke til en ting? jeg setter bærbare datamaskiner i to_tsquery() Funksjon, men det er ikke bærbare datamaskiner nøkkelord i produktbeskrivelsen. Så hvordan fant PostgreSql det? Vel, det er magien med fulltekstsøk. Nøkkelordene trenger ikke å være nøyaktig. PostgreSql kan til og med håndtere noen flertallsord, tider og mange flere.
Som standard fungerer fulltekstsøket bare på engelsk språk. Men PostgreSQL gir også støtte for noen andre språk. Sjekk PostgreSQL -dokumentasjonen for mer informasjon om den.
Slik utfører du fulltekstsøk på PostgreSQL. Takk for at du leste denne artikkelen.