Avatar billede dcasso Nybegynder
04. januar 2002 - 23:02 Der er 8 kommentarer og
1 løsning

Kan I gennemskue følgende SQL&ASP-problem

Hej

Jeg håber der er nogle som kan give mig en hånd med et problem jeg står overfor og som jeg føler mig rimelig sikker på er tilpas komplekst, til at nogle af jer kloge hoveder herinde kan hjælpe mig (Håber jeg da) :)

Jeg skal lave en søgemekanisme på en hjemmeside som kan søge i 200 ord, hvorfra personer kan vælge op til 20 ord som så skal bruges som søgekriterierne.
Det første problem er at i den tabel som der skal søges i er 8 kolonner som skal gennemsøges for om de indeholder et af de 20 ord.
Det næste problem er at søgningen skal resultere i, at alle resultaterne som kommer frem kun må indeholde nogle af de 20 søgeord. Dvs. søger man på a,b,c,d så kan resultaterne være:\'
a b
a b c d
b d
a
men ikke
a e f

Der vil i db\'en være ca. 6000 records som skal gennemløbes og tiden er jo også rimelig kritisk på nettet, men jeg har en forventning om brugerne kan klare op til en 30 sekunder.

Er der nogle som har nogle forslag til hvordan dette kan laves, for jeg føler mig ret blank, og ser det eneste mulighed som værende at man søger på de resterne 180 ord for at sortere disse records fra. Men 180 ord i 8 kolonner (hvor ordene kan stå i flere af kolonnerne, så der er altså ingen struktur) og så i 6000 records virker ret uoverskueligt.

mvh og sig til hvis der kræves mere uddybning
Dennis
Avatar billede dcasso Nybegynder
05. januar 2002 - 00:08 #1
Det bedste forslag jeg har indtil videre har fået fra en, er at lave en nøgleværdi som er 200 lang, og som indeholder 1/0 for om den enkelte ingrediens indgår således at man kan frasortere de steder hvor de resterne 180 ingredienser indgår og derved sidde tilbage med et brugbart resultat. Virker dog beregningsmæssigt meget tung og ret kompliceret, så forslag er som sagt meget velkomne.
Avatar billede www.net-ware.dk Nybegynder
05. januar 2002 - 00:28 #2
Jeg tror at den metode som du har hørt er den eneste der er ligetil at indføre.
men hvis du vælger at anvende eksempelvis 16 tals systemet så spare du et antal karaktere da hver tal da repræsentere 4 pladser. du kan i princippet også anvende op til 256 tals-system(ascii tegn) det giver 8 karaktere på hver plads og dermed 25 karaktere. det medføre dog også at du skal igennem qry\'en op til 4 hhv 8 gange. Det er er dog heller ikke dræbende. Jeg har lavet op til 1379 qry på en access db med over 100.000 poster på 8 sek. på et web-hotel, svarende til mere end 10.000 qry pr min. Du kan forvente en qry tid på op til langt under et sek. hvis det er sat rigtigt op. Denne løsning giver selvfølge lidt logik forud for qry\'en men det er til at overse.

hvis du skal bruge detaljer så kan du eventuelt kontakte mig på
lbl@net-ware.dk

mvh

Lars
Avatar billede dcasso Nybegynder
05. januar 2002 - 00:47 #3
Til Net-ware

Lige et par spm. som du måske kan afklare for mig.

1. Det skal køres i en simpel accessdb, kan det det
2. Hvordan ville du lave en søgning på et sådan felt, det virker ik som om SQL kan klare det, men at man skal programmere sig ud af det, eller tager jeg fejl

3. Jeg har aldrig været ude for at skulle løse noget tilsavrende før og derfor intet kendskab til hvordan man eksempelvis vil kunne lave det med 16-talssystemet i en db. Har du nogle kilder jeg vil kunne bruge?

Mvh og på forhånd tak
Dennis
Avatar billede www.net-ware.dk Nybegynder
05. januar 2002 - 03:57 #4
1. JA
2. Det kan man gøre i SQL-qry, men der skal være en tabel med værdier svarende til de søge ord. hvis søge orderne var \"mig\", \"dig\", \"os\" og \"dem\" så skulle de eksempelvis tildeles værdierne mig:1 dig:2+? os:2+?+? dem:2+?+?+? osv...
så ville du bruge de samme værdier ifm udvælgelsen på hjemmesiden.
16-talsystemet er blot at samle 2*2*2*2 (altså 4 binære værdier i en karakter) hvis  brugeren har valgt \"mig\" og \"dem\" så svare det til første og fjere \"to-tal\" mig:1 dem :8
16-talsværdien er 1+8=>9.
Det resultere i 3 qry søg efter 1,8 og 9

Den post i databasen som har søgeorderne mig og dem vil så havde nøgle ordet 9  og kun 9 da

Hvis hjemmesiden har nøgle ordet mig:1 så skal der søges på alle de muligheder der indeholder 1
det er alle ulige.
hvis det var dig:2+? så ville det være 2,3,6,7,10,11,14,15

Nej jeg har ingen hjemmeside kilde, men det fremgår af mange bøger om opbygning af datalogik.

mvh

Lars
Avatar billede dcasso Nybegynder
05. januar 2002 - 10:07 #5
Jeg vil lige afprøve og se om jeg kan gøre dette i virkeligheden, håber ik du har noget mod at jeg lader spm. stå åben lidt endnu (max weekenden ud), for du har hjulpet mig en del.
Der er bare nogle ting jeg ikke helt kan følge endnu, deriblandt hvordan man kan få lavet en sql søgning som kan håndtere at man vil have alle dem fra dit eksempel (2,3,6,7,10,11,14,15). Der hvor jeg hopper af sporet er når man måske vil ende med 25-30 16-talsværdier efter hinanden pga. antallet af mulige ord, hvordan dælen kan SQL så hive de rigtige ud. Er det mig som skal lave en where-klausul, hvor jeg bare beder om dem som hedder Undersøgelsesfelt = 2 or Undersøgelsesfelt = 3, altså spørge om alle kombinationerne?

Men mange tak indtil videre
Avatar billede www.net-ware.dk Nybegynder
05. januar 2002 - 12:15 #6
\"der er bare...\" :Det er den \"logik\" du skal afklare i eksemplevis vbscript ført du laver SQL-kaldet.
Avatar billede dcasso Nybegynder
05. januar 2002 - 15:17 #7
Jep det har du jo nok ret i og jeg sidder da også \"kun\" tilbage med noget kombinatorik jeg ik kan løse, men det er jo en anden snak, så du har fortjent pointene.

Mvh
Dennis
Avatar billede www.net-ware.dk Nybegynder
05. januar 2002 - 16:43 #8
Hvis jeg skal hjælpe dig med kombinatoriken uden at alle skal kende dit projekt så send en beskrivelse af dine \"søgninger\" og hvad de går ud på så skal jeg se om jeg kan hjælpe

lbl@net-ware.dk

mvh
Lars
Avatar billede dcasso Nybegynder
05. januar 2002 - 16:47 #9
Takker, men jeg vil nu ikke belemre dig for meget, så jeg har lavet et åbent spm.: http://www.eksperten.dk/spm/154592
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
Kurser inden for grundlæggende programmering

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