Optimerede struktur til søgning - MS Freetext Engine
Jeg skal til at lave en produkt database i et e-handels system.Der kommer til at være ca 2-3 mill. produkter i systemet fordelt i n kategorier (ProductTypes).
Til produkterne knytter der sig en masse information af forskellig typer.
De vigtigste er som følger...
(Bruges til en "Quick search")
- Type fk-> ProductTypes.indeks
- Title varchar(250)
- ProductCreator varchar(250)
- ArticleNumber varchar(250)
(Bruges til advanced search)
- ProductPublisher varchar(250)
- MarkedDate datetime
- Language fk-> Languages.indeks
- Description varchar(2000)
Derudover findes der en masse forskellige data om de enkelte produkter, som kun er relevant ved produkt-detalje visning.
Disse er dog lagt ud i en selvstændig tabel og en associationstabel, for at holde den primære produkt tabel lille.
Endvidere findes der flere leverandører og dermed flere priser pr. produkt, hvor kunden altid skal tilbydes den laveste.
Alle produkter og priser bliver importerede i flade tekstfiler hver nat fra eksterne leverandører, og er derfor en forholdvis flydende størrelse. (Har selvf. taget højde for at tabllerne skal reindekseres hver nat efter importen)
Jeg havde tænkt mig at benytte Microsoft Freetext Search Enginge til at udfører søgninger. Hvad syntes du?
Søgningen udføres ved brug af Stored Proc. og skal sendes videre til et repræsentationslag ved brug af webservices gennem C#.
Søgningen skal holdes nede under 1 sek. Således at den samlede håndtering (fra ui -> db -> ui> maks tager 1-2 sek.
Søgningen skal kun vise 20 resultater ad gangen.
Jeg har ikke før arbejde med databaser af den størrelse hvor fritekst søgning er omdrejningspunktet for hele løsningen.
(Den primære måde at finde et produkt er gennem søgning)
Jeg syntes at have nogle problemer med at få en optimal strukture ud af min tabeller, og leder derfor efter nogle gode råd for at holde søgetiden nede.
Så sidder du derude og har en stor viden om db struktur og freetext searching ser jeg frem til en dialog.
Jeg har et par diagrammer over min "nuværende" struktur, hvis man ønsker at se dem for at få et bedre indblik.