Avatar billede rozh Nybegynder
04. juli 2003 - 14:08 Der er 2 kommentarer og
1 løsning

fritext søgning

Hej.
Jeg har en database med en masse gadenavne i. Jeg vil gerne kunne søge i databasen på følgende måde:

Jeg får en tilfældig textstreng med et vilkårligt antal ord. Textstrengen indeholder altmuligt heriblandt evt et gadenavn (som kan bestå af flere ord). Jeg vil gerne kunne finde det eventuelle gadenavn i textstrengen sammenholdt med databasen. Hvordan kan jeg gøre det ?

Jeg har selv nogle ideer til hvordan man gør:

1-I MySQL findes en funktion til fritextsøgning, hvor man laver en FULLTEXT indexiering på databasen.

2- At udtage ordene i strengen. Tage det første ord først og søge, dernæste tage ord1 + ord2 og så ord1+ord2+ord3 og søge osv. Når man når enden, starter man forfra med at tage ord2 kun og søge, dernæst ord2 + ord3 og søge OSV.

Jeg ved ikke, hvilken måde der giver de mest pålidelige resultater, og hvilken er hurtigst ?

Hvis I kender andre måde man kan gøre det på, eller hvis I har forslag til forbedring af ovenstående metoder, må I meget gerne komme med dem her. Specielt den 1. metode er jeg ikke så meget ind i, hvis nogen er eksperter i den må I gerne komme med detaljer omkring den.

mvh
Rozh
Avatar billede opperen Nybegynder
04. juli 2003 - 14:12 #1
Jeg synes også at 2 lyder smartest.
select distinct(*) from addresser where gade like '%ord1%' or gade like '%ord2%' osv. Hvor du altså splitter strengen op på mellemrum.
Avatar billede detox Nybegynder
04. juli 2003 - 16:30 #2
Jeg synes nu ikke fulltext søgningen er så dårlig. Den sorterer resultatet efter relevans. Så medmindre det er en meget stor tabel du søger i, hvor den efter sigende kan være lidt langsom (hvilket det osse kan tyde på din anden løsning kunne blive), kunne du overveje at prøve den. Det spiller selvfølgelig ind hvor lang din søgestreng er ift hvilket resultat du vil få ud, men det vil det jo gøre under alle omstændigheder.
Avatar billede rozh Nybegynder
13. juli 2003 - 21:41 #3
Tak for jeres indlæg.

Da jeg ikke har uddybende og velbegrundet svar på hvorfor jeg skal bruge det ene frem for det andet, og da jeg ikke har fået konkrette forslag til forbedring af søgealgoritmen, tager jeg selv pointene igen.

mvh.
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