Hej James,
Tak for dit lange svar, og jeg kan godt se, mit indlæg manglede nogle informationer, så vi prøver lige igen :
Først mine tabeller :
Tabel words - word varchar(50), wid number;
Tabel wordmap - wid number, pnr number;
Tabel Urls - pnr number, url varchar(500);
Herefter en søgning
Find den side hvor KURT NIELSEN står:
select u.url from
urls u
,(select pnr
from words w
,wordmap m
where w.wid = m.wid and word like 'KURT%') x1
,(select pnr
from words w
,wordmap m
where w.wid = m.wid and word like 'NIELSEN%') x2
where x1.pnr = x2.pnr and u.pnr = x1.pnr;
Hvis x1 fyres af alene tager det under 1 sek.
Hvis x2 fyres af alene tager det under 1 sek.
Men i den sammensatte form er det op til 30 sec.
"James Olsen" skrev d. 25-06-01 13:05 dette indlæg :
>
> "konsulenten" <konsulenten.news@kandu.dk> wrote in message
> news:T_CZ6.2047$lf5.391384@news010.worldonline.dk...
> > Hej alle sammen,
> >
> > Jeg har lavet en search engine som søger på indekserede ord i MS SQL.
> > Det køre også temmelig godt, bortset fra at min søgning tager for lang
> > tid.
> >
> > TABEL :
> >
> > Word varchar(50) (index)
> > Url varchar(1024)
> >
> > Når jeg søger efter et enkelt ord så tager det ca. 2 sek, men når jeg så
> > søger efter 2 ord, tager søgningen helt op til 30 sekunder (IKKE SÅ
> > GODT!), og 3 ord så går det helt i kage. Det er som om, MS SQL server
> > ikke laver indeks på temporere tabeller, eller den ignore mine indekser,
> > så jeg ved ikke om det er en option som skal sættes op i SQL Server.
>
> Det lyder lidt som om du laver en søgning og indsætter resultatet i en
> temporer tabel og derefter søger i den, hvis der er flere søge ord, og så
> fremdeles ? Hvis det er korrekt så er det egentligt ikke så underligt
> hvorfor din SQL Server er ved at gå kold. Prøv at tænke på den mængde data
> som du flytter rundt på den måde (intern båndbrede). Under forudsætning af
> at jeg har gættet rigtgit så har du ikke så mange muligheder andet end at
> komme op med et nyt design - for det der kommer aldrig ud over stepperne.
>
> Hvis det skal baseres på SQL Server (eller en anden DBMS) så skal du finde
> en måde at søge i nogle realiserede (permanente) tabeller. Og udgangspunkt
> skal du ikke være så bange for hvormeget dine data fylder med indeks, men
> prøv at se på query planen for dine forespørgsler og så hvor den er gal.
>
> Skriv eventuelt noget med om hvordan det er organiseret og hvad det er man
> skal kunne søge på.
>
> >
> > Er der nogen af jer som kender til problemet? Eller kender et sted hvor
> > jeg kan finde informationer om måden at bygge en search engine? Når jeg
> > kigger på
www.google.com, og ser deres tider, er det mig en gåde, for så
> > langt ned kan jeg ikke engang komme bare med søgning af et ord.
> >
>
> Du må endelig ikke sammenligne en løsning baseret på MS SQL Server med hvad
> der foregår hos Google - de har en dedikeret server (ja ok der er fysisk
> flere) specielt til formålet. Prøv at kigge her
>
http://www.google.com/technology/index.html der står lidt om hvordan det
> fungere.
>
>
>
> > Konsulenten
> >
> > --
> > Leveret af:
> >
http://www.kandu.dk/
> > "Vejen til en hurtig løsning"
> >
>
>