Avatar billede baitianlong Nybegynder
09. marts 2009 - 15:46 Der er 5 kommentarer og
1 løsning

Meget data giver alt for langsomme soegninger

Jeg har bygget et system som virker fint nok, men problemet er at data-maengden er meget stor og stiger hurtigt. Der er nu omkring 200.000 poster med text, som skal soeges igennem med diverse parametre.

Mine soegninger tager alt for lang tid.

Jeg bliver noedt til at have noget hjaelp til at speede soegninger op. Jeg bruger "bare" sql kald nu.

Jeg har kigget paa Lucene fra apache, men det lader ikke til at vaere noget, jeg lige kan finde ud af at implementere. Jeg har ogsaa hoert noget om fulltext felter, som kan goere soegninger hurtigere. Kan nogen raadgive om dette problem?

Systemet er bygget i Java og Oracle XE.
Avatar billede arne_v Ekspert
09. marts 2009 - 15:52 #1
Hvis det er en normal database med korte VARCHAR2 felter, saa er vejen frem:
* index paa de relevante felter
* undgaa LIKE udtryk som starter med %

Hvis det er en database med lange tekster, saa skal du kigge paa enten FULLTEXT eller noget som Lucene.

Man kan ogsaa selv lave noget ligesom Lucene (jeg har selv lavet et lille system til indeksering af source code).
Avatar billede baitianlong Nybegynder
09. marts 2009 - 16:09 #2
Dataen har baade laengere og kortere tekster, disse ligger i CLOBs.

Hvordan bruger jeg FULLTEXT felter?

Hvordan bruger jeg Lucene (kan jeg evt. bruge Compass)?

Hvad er bedst/hurtigst?

Jeg har ogsaa taenkt paa en anden, mindre teknisk ide, hvor jeg laver et ekstra tekstfelt, som indeholder teksten fra posten, men fjerner alle ligegyldige ord (I, You, He, And, Then osv.) og soeger i dette felt i stedet for. Vil det hjaelpe?
Avatar billede arne_v Ekspert
10. marts 2009 - 01:20 #3
Ikke meget.

Det det hjælper at smide de enkelte ord over i flere rækker i en separat tabel.
Avatar billede arne_v Ekspert
10. marts 2009 - 01:22 #4
Jeg ved ikke lige præcis hvad Compass tilbyder oveni den underliggende Lucene.

Det kunne godt være en mulighed.

Apache har selv et par projekter som bygger oven på Lucene.
Avatar billede baitianlong Nybegynder
21. april 2011 - 12:12 #5
Hej Arne,
Lidt en gammel sag, der ikke er blevet lukket her. Smider du ikke et svar?

P.S. Fulltext har vist sig at vaere en vinder uanset database og nemt at bruge tilmed :)
Avatar billede arne_v Ekspert
21. april 2011 - 18:38 #6
ok
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