Avatar billede hrc Mester
07. juni 2017 - 18:16 Der er 2 kommentarer

Fritekstsøgning implementeret på databasen

Jeg vil lave en fritekstsøgning og gemme koden i databasen. Hvordan gør man det rigtigt?

1. Et tekstfelt i programmet søger i navn, adresse, postnr, by, telefon og email
2. Det skal ligge i basen, dvs. være en stored procedure eller funktion der returnerer et datasæt, på basis af et vilkårligt antal (eller begrænset på 4-5 stykker) søgeord
3. Skriver man eksempelvis Bjarne Nyborg, så skal den søge på både Bjarne og Nyborg og returnere fællesmængden.

Umiddelbart arbejder jeg på følgende idé:
For hvert søgeord
  Søg i den sidst brugte temporære tabel (som indeholder forrige søgeords datasæt), eller brug den originale tabel
  Gem resultat i en temporær tabel
end loop
Returnér den sidste temporære tabel

Kan det overhovedet lade sig gøre via SQL? Er det allerede i SQL-serveren? Vil helst ikke over i at aktivere fritekstsøgning, for databaseserverne det skal køre på, er ikke mine.
Avatar billede jakobdo Ekspert
07. juni 2017 - 20:47 #1
Avatar billede hrc Mester
08. juni 2017 - 02:35 #2
Ja, men det kan jeg ikke bruge, da jeg ikke kan tvinge folk til at aktivere full-text optionen - og i øvrigt ikke mener det løser problemet. Jeg vil gerne have en søgefunktion sådan som man ser den på alle hjemmesider, men jeg er i tvivl hvordan man gør.

Jeg leder derfor efter er en "best practice" eller en der kender en funktion der kan det jeg har brug for.

Enten et itereret gennemløb af søgeordene, som nævnt ovenfor, eller et indeks sammensat af de felter jeg ønsker at søge på (navn + adresse + postnr + ...) og så bruge "like" eller "contains" på denne. Noget med at opdatere den via en OnUpdate og OnInsert trigger eller måske et kalkuleret felt (hvilket må være meget ineffektivt). Jeg kan ikke helt se om det løser opgaven, men det overvejes.

Jeg skal bare kunne søge i en række felter med et vilkårligt antal søgeord. Fællesmængden af disse søgeords datasæt skal derefter returneres.

Søgning på "Bjarne" finder alle records hvor et eller flere felter indeholder ordet.
Søgning på "Nyborg tilsvarende.

Fællesmængden fra de to datasæt er resultatet: Bjarne Nyborg, samt alle de Bjarner der bor i Nyborg mm.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester