Avatar billede c-sharp Nybegynder
18. januar 2005 - 11:33 Der er 19 kommentarer og
1 løsning

Hjælp til FULLTEXT indexering

Jeg en grum sql-sætning som jeg gerne skal have opdateret min database til at søge på. Da jeg bruger "%xxx%" søgning er jeg blevet oplyst at jeg skal bruge FULLTEXT indexering, men hvilke kolonner skal jeg indexere, og hvor dan forgår det?
Avatar billede Syska Mester
18. januar 2005 - 11:59 #1
Det skal være på de kolonner som ikke indeholder ens data, hvis det skal give mere preformance...
Avatar billede c-sharp Nybegynder
18. januar 2005 - 13:23 #3
Jeg har nu kigget i en af de artikler og fundet en guide, problemet er at jeg under punktet "Full-text Catalogs" i EM ikke kan vælge "Full-text Catalog.." den er grå. Hvad er der galt?
Avatar billede arne_v Ekspert
18. januar 2005 - 13:30 #4
Fra en af artiklerne:

To get started, you need to add a full-text catalog to your database. The easiest way to do this is to open SQL Server Enterprise Manager and expand the node for your database to find the Full-Text Catalogs node (if that node isn't present, check to make sure that the Microsoft Search Service is installed on the server).
Avatar billede c-sharp Nybegynder
18. januar 2005 - 13:37 #5
Ja og det er der jeg er nået til, Jeg har punktet "FULL-text Catalog.." men kan ikke oprette en ny. Hvis den ikke er installeret hvorfor er punktet der så, og hvordan installere jeg den?
Avatar billede arne_v Ekspert
18. januar 2005 - 20:35 #6
Sorry - det ligger ud over min viden.
Avatar billede veronica Nybegynder
18. januar 2005 - 22:15 #7
Hej,
Prøv i Enterprise Manager at højreklikke på en af dine tabeller. Her får du en menu, der hedder "Full-text Index Table". Det er ad denne vej, at du indexerer din tabel. Det kræver, at tabellen har en primærnøgle (eller anden unique constraint). I slutningen af wizard'en skal du specificere et katalog - det kommer til at ligge under "Full-text Catalogs" i EM (hvor du har kigget).
mvh. Veronica
Avatar billede c-sharp Nybegynder
19. januar 2005 - 12:04 #8
"Full-text Catalogs" er grå når jeg højre klikker på en tabel
Avatar billede veronica Nybegynder
20. januar 2005 - 08:58 #9
Nåja så har du nok ikke installeret det, da du installerede SQL Server. Jeg mener, det ligger i den alm. installationspakke.
Avatar billede veronica Nybegynder
20. januar 2005 - 09:03 #10
Det kan dog også være fordi, du ikke har startet fulltext servicen. Prøv i EM at højreklikke på "Full-text search" i mappen "Support services" og vælg "start". Når servicen kører, vises en grøn pil frem for den røde cirkel.
mvh. Veronica
Avatar billede c-sharp Nybegynder
21. januar 2005 - 09:41 #11
Nå man nu har jeg fået det sat op, jeg kunne af en eller anden grund kun sætte det op fra EM på SQL-serveren, også selv om jeg logger på med samme brugernavn og adgangskode fra EM på min egne maskine.

Jeg har nu prøvet at fyrre samme sql-sætning af igen, og jeg har hentet ca 3 - 5 sek. men søgningen tager stadig 30 sek. Skal man skrive sin sql-sætning om når man bruger FULL-text catalog?  Kan man evt bruge FREETEXT, FREETEXTTABLE, CONTAINS, CONTAINSTABLE ?
Avatar billede veronica Nybegynder
22. januar 2005 - 20:05 #12
Der skulle ikke være noget i vejen for, at du sætter din fulltext kataloger op i en remote EM.. (?)

Anyway - nu ved jeg ikke, hvilken SELECT statement, du bruger - men du skal lige præcis bruge FREETEXT, FREETEXTTABLE, CONTAINS, eller CONTAINSTABLE. Bruger du almindelig LIKE-operator, bliver dit fulltext index ikke brugt. Til gengæld får du også en masse nye muligheder ved at bruge FREETEXT eller CONTAINS frem for LIKE, fx vægtning af dine søgeord, at der søges efter ord i andre former, etc.
Læs evt. mere her: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql90/html/sql2005ftsearch.asp
Avatar billede c-sharp Nybegynder
24. januar 2005 - 09:06 #13
Hvordan omskriver jeg så følgende:

    etEllerAndet LIKE '%XXX%'
Avatar billede veronica Nybegynder
24. januar 2005 - 15:28 #14
contains(etEllerAndet , 'XXX')
Avatar billede c-sharp Nybegynder
24. januar 2005 - 15:44 #15
Hvis jeg skriver det får jeg ingen resultater, mens jeg den finder 4 poster på den anden skrive måde.
Avatar billede veronica Nybegynder
24. januar 2005 - 21:42 #16
Det lyder som om, du ikke er færdig med at sætte din fulltext indexing op ..
Efter at have defineret dit katalog, skal du populere det - det gøres i samme højre-klik menu fra tabellen, og du vælger "Start full population". Herefter skal du vente lidt, inden du prøver din query igen (du kan følge med under "fulltext catalogues"). Jeg pleger også at vælge "Change tracking" (samme menu), for så tilføjes ændringer i data automatisk til fulltext indexet. Om ikke andet bør du have et populerings-schedule defineret, fx. at den hver morgen regenerer indexet. (Det gjorde du, da du kørte wizard'en, hvor du definerede full-text indexet).
Avatar billede c-sharp Nybegynder
25. januar 2005 - 08:39 #17
Jo den skulle være færdig med at indexere.

Søger jeg på noget andet som f.eks. 'ben' finder den kun de steder hvor 'ben' står for sig selv.

eks.
    Stilbar ben - det finder den

    Bordben - finder de ikke, det gør den anden søgning.
Avatar billede veronica Nybegynder
25. januar 2005 - 10:18 #18
Du vil nok aldrig få 100% samme funktionalitet som i en LIKE-statement.. Fulltext er ikke en erstatning for LIKE, men en helt ny måde at søge på, hvor man søger på forskellige former af ordene (ie. 'run' søger også på 'runs' og 'ran' men ikke 'trunk').
Men nu du siger (bord)ben bliver jeg usikker på, hvordan det fungerer på dansk - det ved jeg ikke, hvordan man sætter op - muligvis et add-on? Hvis du søger på danske ord, vil der (som regel) ikke være nogle engelske bøjninger, og derfor finder den kun det eksakte ord.
Avatar billede c-sharp Nybegynder
25. januar 2005 - 13:00 #19
Jeg fandt ud af en anden måde at skrive det på så den fandt flere resultater:

contains(etEllerAndet , ' "*XXX*" ')

Men jeg har droppet fulltext indexering igen. Jeg fandt nemlig ud af at hvis jeg brugte DISTINCT i min sql-sætning blev søgetiden minimal!

Nå men nu ved jeg da hvordan Fulltext indexering fungere, så veronica smid et svar så er der nogle velfortjente point og tak for hjælpen! Der skal også lyde en tak til arne_v, den her gang må du undvære point men du har jo også riglig ;-)
Avatar billede veronica Nybegynder
26. januar 2005 - 22:23 #20
Tak - jeg er glad for, at jeg kunne hjælpe dig.
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