Avatar billede melieha Nybegynder
31. august 2011 - 12:44 Der er 3 kommentarer

Udlede adresse, by, postnummer fra en samlet søgestreng.

Hejsa

Jeg er klar over at det her måske er et noget tungt spørgsmål.

Vi leger lidt med noget søgning hvor vi har en masse punkter i Danmark hvor vi i databasen har dem oprettet med Navn, Adresse, By og Postnummer i databasen.

Det som er vores udfordring er at søgningen sker via et enkelt søgefelt, hvor man så enten skriver et postnummer, navn etc. Eller en blanding af det hele.

Jeg har sådan set fået kodet en løsning der er minimalt tilfredsstillende, hvor den finder frem til om der bliver tastet et gyldigt postnummer og får fjernet det fra resten, og så søger med resten af de eventuelle inputs i de resterende felter.

Udfordringen er bare at hvis der bliver søgt efter "Punkt 1, 8100"
Så starter vi med at indkredse til postnr. 8100, og derefter søger vi efter "Punkt 1" i adresse, navn og by. Det giver som udgangspunkt et okay resultat.

Men hvis man så søger efter "Punkt 1, Langelandsgade" så søger vi efter "Punkt 1" og "Langelandsgade" over alle felterne, og så kommer problemerne, for med den følgende opsætning får vi jo alle resultaterne, så har vi "Punkt 2" på Langelandsgade i en helt anden by, så kommer den også frem.

Jeg er i tvivl om hvordan man bedst kommer videre, er der nogen artikler eller lignende omkring det?
Har overvejet om man skal køre det hele op imod en tabel med bynavne eller lignende punkternes navne - Men det virker også bare som en voldsom løsning.

Det betyder heller ikke det store om der bliver vist urelevante punkter, bare de så kan blive sorteret efter relevans.

Alle gode råd, links mm. Modtages med stor glæde :)
Avatar billede Slettet bruger
31. august 2011 - 21:34 #1
Hvad med Full-Text Search? msdn.microsoft.com/en-us/library/ms142571.aspx

Jeg har aldrig brugt det men det ser ud til at kunne bruges.
Avatar billede melieha Nybegynder
05. september 2011 - 09:54 #2
Ja, jeg har forsøgt mig lidt, men min database skal vist lige have nogen tæsk før at den tager imod :)

Andre forslag er velkomne, og jeg skal nok vende tilbage hvis jeg får en brugbar løsning ud af det.
Avatar billede jtbroad Nybegynder
29. september 2011 - 15:51 #3
Bruge en view til at concatenere alle felterne til en string.

Create view dbo.V_Search
as
Select name+address+by+cast(postnr as varchar(4)) from dbo.table
as Soegfelt

Skulle give noget lignende:
'Punkt 1,Langelandsgade,4000,Odense'

derefter søge på at feltet indeholder alle de kriterier der søges på.

f.eks
Select * from dbo.V_search where
soegefelt like '%punkt1%' and soegefelt like '%Langelandsgade%'
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
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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