01. januar 2004 - 15:20Der er
6 kommentarer og 2 løsninger
Idéer til løsning af besværlig site-search
Hej, Jeg sidder i øjeblikket og arbejder på nogle udvidelser til et site der er lavet i (næsten) ren HTML. Udvidelserne bliver lavet i ASP, med en MS SQL database.
Mit problem er, at der skal laves en søgemaskine, hvor brugeren kan søge efter ord på hele sitet. Både den HTML- og den ASP drevne. Det er jo nemt nok at søge i det ASP drevne, da det ligger i databasen, men hvordan skal jeg samtidig kunne søge i det er er skrevet i HTML-dokumenter?
I øjeblikket hælder jeg lidt til at det tekst man skriver i et HTML dokument også manuelt skal gemmes i databasen, sammen med et link til hvor på sitet det er. På den måde kan man få det med i søgningen. Er der andre måder der er bedre? Det håber jeg! Jeg har hørt om noget JavaScript der skulle kunne søge i HTML dokumenter, men har ikke kunnet finde noget brugbart...
Der findes forskellige services man kan køre med - fx mener jeg der er noget der hedder freefind som www.html.dk.
En anden mulighed er, at du vha FSO (FileScriptingObject) læser samtlige HTML-filer igennem og så fx poster et link til de filer hvor søgestrengen har givet resultat.
Set FSO = Server.CreateObject("Scripting.FileSystemObject") Set Folder = FSO.GetFolder("c:\sti\til\mappe") For Each File In Folder.Files If InStr(File.ReadAll, Keyword) > 0 Then Response.Write "<a href='" & File.Name & "'>" & File.Name & "</a><br>" End If Next Set Folder = Nothing Set FSO = Nothing
Det virker umiddelbart meget krævende, at åbne alle filerne.. Og hvad hvis man har en mappestruktur..? Så bliver det endnu mere besværeligt..
Man kunne måske løbe filerne igennem, og gemme indholdet i databasen.. Så kan man bruge netros kode, og i stedet for at check efter keyword, kunne man smide indholdet i en variabel, og derefter smide den i databasen.. Det skal så kun gøres 1 gang for hver fil.. Og det vil være nemmere at søge i dine data senere..
det er klart meget krævende - men mappestruktur gør det ikke umiddelbart mere besværligt vil jeg mene. At lægge indholdet af alle html-filer er selvfølgelig en mulighed, og det vil også gøre det hurtigere hvis der er mange og store filer og der måske skal søge mange gange.
Det som de store søgerobotter er at søge internettet igennem, og så gemme bestemte ord og sammenhænge fra siderne i en database -og det er dén databaser man så søger på. Du skulle nok gøre noget af det samme, hvor du gemmer hvilke resultater brugerne får når de søger på dét og dét ord, og gemmer det i en database, og så det går hurtigere næste gang der er en der søger på det samme -eller noget der ligner.
Har aldrig selv prøvet det. Så intet hjælp at hente her :)
Hvis der er mappestruktur, skal det laves med en rekursiv funktion. Selvfølgelig vil det altid være lettere at håndtere i en database, men hvis du har et begrænset antal filer, behøver det ikke være SÅ tungt at have med at gøre.
Jeg tror at jeg vil prøve mig frem med Netros løsning. Hvis det viser sig at være for langsomt, kan jeg jo evt. kode en funktion som gemmer teksten i databasen, og som så bare skal køres hver gang man har lavet opdateringer i databasen...
Tak for hjælpen alle sammen, bare fortsæt diskussionen :)
Der er vist ikke så meget at diskutere. Det kommer an på, hvad man føler, der dækker ens behov bedst. En database er som sagt at foretrække til søgninger, men i dit tilfælde, vil du sikkert også gerne undgå for meget dobbelt-data.
Tak for points.
Synes godt om
Ny brugerNybegynder
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.