Avatar billede lundsfryd Nybegynder
10. september 2001 - 01:29 Der er 6 kommentarer

Arkitektur til søgesystem

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.

/ Mathias
Avatar billede roenving Novice
10. september 2001 - 01:33 #1
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å.

jes
Avatar billede martinlind Nybegynder
10. september 2001 - 10:08 #2
Og kig også på IB, det er en fed base, med mange gode funktioner.
Avatar billede lundsfryd Nybegynder
10. september 2001 - 12:07 #3
martinlind >> kan du sige lidt mere specifikt, hvorfor IB er bedre end f.eks. PostgreSQL i denne sammenhæng?

Bemærk i øvrigt, at det hele kører på Linix, som - så vidt jeg har forstået - IB ikke kører helt optimalt på.
Avatar billede martinlind Nybegynder
10. september 2001 - 12:13 #4
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
Avatar billede lundsfryd Nybegynder
14. september 2001 - 15:03 #5
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 :)
Avatar billede martinlind Nybegynder
15. september 2001 - 22:00 #6
Ok *S*
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
Computerworld tilbyder specialiserede kurser i database-management

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