Avatar billede janelarsen Nybegynder
27. januar 2004 - 19:28 Der er 11 kommentarer og
1 løsning

Kan man bruge en sql database til at søge efter dokumenter i?

Jeg har nogenlunde styr på alm. databaser.
data indsættelse i selve databasen
men ville gerne vide om man kan oprette en database for søgning af dokumenter?
hvodan den laves og hvodan man via databasen åbner dokumentet
Avatar billede terry Ekspert
27. januar 2004 - 19:40 #1
what programming langauge are you using? Normally you would place a document on a file server and only store the file name and path to the document in the datbase. Its then much easier to open the document in the associated program. This is very easy in Visuasl Basic using the ShellExecute API!
Avatar billede janelarsen Nybegynder
27. januar 2004 - 20:57 #2
alle dokumenterne skal ligge på en sql server. som alle skal kunne søge på og finde de dokumenter som skal bruges.
Avatar billede trer Nybegynder
27. januar 2004 - 22:02 #3
Du skal lagre dine dokumenter i blob-felter i databasen. Et blob felt er et "Binary Large OBject" - f.eks. TEXT eller IMAGE. Det er den sidste datatype du skal anvende.

Dit klientprogram skal så blot lagre dokumentet som en række bytes via en "normal" INSERT, gemme dokumentændringer via en UPDATE og naturligvis trække dokumentet ud via en SELECT. Altså helt almindelige SQL operationer.

Typisk vil du nok vælge, at klientprogrammet opretter en temporær fil udfra de læste binære data og så kalder ShellExecute() på filen. Evt. kan du vælge at åbne fx Word som et COM objekt og have redigeringensfaciliteterne direkte i dit eget program.

Du er nød til at have alle informationer du ønsker søgbare i normale tekst felter (varchar) - binære data er ikke forståelige med SQL syntaks.

En tabelstruktur til dokumentlagring kunne være

table documents(
  id int identity(1,1) primary key,
  document_title varchar(200),
  document_author varchar(40),
  document_created datetime,
  document_updated datetime,
  document_filetype varchar(3),
  document_version int,
  document_summary text,
  document_data image
)

Hvor titel, author, created, updated er rimelig oplagt, filetype er så fx DOC, PDF, WPD, etc - man skal jo have information om hvad type program der skal bruges til selve fortolkningen. Summary er en kort tekst der summer dokumentindholdet op - og document_data er det binære dokument image.

Har du behov for auditlog etc på data ændringerne? Så er der nemlig nogle småting der skal tilføjes...
Avatar billede terry Ekspert
28. januar 2004 - 09:05 #4
You can still search after documentes if you keep the actual file in a folder. Same table layout as trer gives but instead of document_data image you have document_pathFileName and then you wouldnt need filetype
Avatar billede slash Nybegynder
28. januar 2004 - 09:40 #5
Løsningen på din forespørgsel er ganske simpel. Du bruger MS Indexing service sammen med SQL-server til at søge efter dokumenter på din filserver fx.! Det er ganske let at sætte op, kræver få ressourcer og det performer ganske hurtigt! Fordelen er jo at du principielt kan lave en freetext search i et af dig foruddefineret catalog indeholdende de dokumenter du har "vinget" af skal indgå i cataloget!!!

Hvis det har interesse kan jeg hjælpe yderligere med selve den tekniske opsætning via dette fabelagtige site ;-)
Avatar billede trer Nybegynder
28. januar 2004 - 09:41 #6
Terrys forslag minsker belastningen på serveren og giver dermed mindre overhead end ved at embedde dokumentet i sql serveren. Det er også den løsning der benyttes i mange dokumentstyringsprogrammer - fx OpenDocs og Documentum.

Eneste problem ved løsningen er, at du ikke i nuværende versioner kan synkronisere online backup af filer med backup af databasen. Dermed bliver restore noget snavs at komme ud i.  En nem løsning er naturligvis at man lukker databasen og tager en offline backup af det hele.
Avatar billede trer Nybegynder
28. januar 2004 - 09:53 #7
Mht sammenhæng mellem dokument og database - samt i forbindelse med audittrail, hvis det har interesse: Løsningen er, at du i din applikation laver en MD5 hash af dokumentet. Den værdi gemmer du i databasen (fylder 32 tegn).

Nu kan du ret nemt kontrollere om et dokument er blevet ændret udenfor dit system og om det er den rigtige dokumentversion efter en restore.

Tilsvarende er det MD5 hashen du skal bruge i et evt. audittrail (du har nemlig ikke lyst til at håndtere blob-felter i et audittrail :-)

Et minus "mere" ved at have dokumenter udenfor databasen er, at dokumentet er nemmere at redigere udenom systemet - det er jo trods alt blot en fil på en filserver. Embedder man dokumentet i et blobfelt, så er det kun via applikationen man kan få adgang til dokumentet (omend man aldrig kan beskytte sig rigtigt mod en administrator).
Avatar billede trer Nybegynder
01. februar 2004 - 01:01 #8
Hmmm, jane... Har du i øvrigt kigget på Microsoft Sharepoint? Det er beregnet til dokumentstyring og svjh baseret på Exchange eller SQL Server.
Avatar billede trer Nybegynder
06. februar 2004 - 10:50 #9
hvad sker ?
Avatar billede trer Nybegynder
12. februar 2004 - 10:15 #10
janelarsen> Har du behov for yderligere hjælp?
Avatar billede trer Nybegynder
18. februar 2004 - 11:12 #11
Hvad sker?
Avatar billede trer Nybegynder
08. marts 2004 - 14:05 #12
juhuu?
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