Jeg er ved at konstruere software til en søgemaskine, og i den forbindelse bryder jeg mit hoved med, hvordan jeg kan opnå en bare nogenlunde acceptabel performance på søgningerne.
Jeg er forlængst over det antal poster, hvor en WHERE keyword LIKE \'%blabla%\' kan køres hurtigt nok, og desuden vil jeg gerne have mulighed for relevansvurdering af posterne i forhold til søgeordene.
Så spørgsmålet er... hvordan organiserer jeg mine data, så der kan søges med en god hastighed samtidig med at jeg kan lave relevansberegning osv. - og hvordan laver så jeg selve søgningen i data\'ene?
Derudover: Hvilken database bør jeg vælge? Jeg har Interbase, MySQL og PostgreSQL at vælge imellem.
Vi snakker minimum ½ million poster, og teksten, der skal søges i er på ca. 20K pr. post.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Jeg ville kigge på den måde Lotus Notes opretter FullText-indexes på (har ikke kigget på dem for alvor, men der oprettes et index, som er basis for søgning).
Altså (selv om du ikke hverken bruger Notes), at du opretter et index og vedligeholder det med en eller anden funktion -- man kan garanteret sammenligne det med den måde som google eller altavista fungerer på.
Det ved jeg ikke noget om, men jeg ved at IB kører godt på Win, er nem at adm. og kører hurtigt. Den har mulighed for at lægge dine egne funktioner ( dll ) ind som så kan kaldes i din SQL, som alm sql bla. Så rent personligt kan jeg skide godt lide IB, den er også godt integreret med Delphi
martinlind >> Nu har jeg testet det lidt, og IB kører (i den opsætning, jeg kører med) langsommere end PostgreSQL (som i øvrigt også har muligheden for \"egne funktioner\").
Så det bliver nok PostgreSQL, jeg satser på, med mindre, der kommer lidt hårdere argumenter frem :)
Jeg har i øvrigt eksperimenteret lidt med sagerne - og har fundet ud af simpelthen at lave en lang (_meget_ lang) liste over samtlige ord i alle de tekster, der skal indekseres, og dernæst lave nogle sjove ting og sager, der kan outputte et søgeresultat ud fra dette.
Jeg er dog rendt ind i nogle performance-problemer (som jeg forøvrigt lige har postet om i PostgreSQL-forummet her på siden) - så forslag til alternative løsninger er stadig velkomne :)
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.