01. april 2003 - 22:47Der er
2 kommentarer og 1 løsning
Kombinere Index Server og SQL Server
Jeg er i gang med at lave en søgefunktion på et intranet, hvor medarbejderne bl.a. skal kunne uploade filer. Disse filer skal bagefter kunne hentes frem via en søgning, og til dette har jeg tænkt mig at benytte Index Server.
Så langt så godt! Men da der er mange filer, så er der også behov for at benytte meta data til at lave en mere præcis søgning. Derfor vil jeg placere disse meta data i SQL Server.
Men for at få dette til at virke, så er jeg vel i praksis nødt til først at foretage en søgning i SQL Server, derefter foretage en søgning i Index Server, og til sidst foretage en sortering af data, så duplikater elimineres. Eller er der en smartere metode ? Jeg har ledt på Internettet, og kan se, at der er andre, der forsøger at lave en kombineret søgning således, at det hele kan klares via et kald. Men kan det lade sig gøre, og er der eventuelt nogen, der har erfaring med det ?
Jeg har selv benyttet en metode hvor der først søges i index-server efter filer. Det giver mig et sæt filnavne som kan benyttes til at foretage en videre søgning på sql-serveren. WHERE Filnavn IN ('/stien/fil1.doc', '/ensti/fil2.pdf')
Det fungerer faktisk ganske smertefrit, og hurtigt.
Men for at få en helt rigtig udnyttelse af kombinationen, så kræver det en STOR server, og at filerne gemmes i sql-tabeller (binary), og indekseres heri. Det kræver blot en kolonne der angiver extension, så kan SQL full-text engine (som også er index-server) klare den.
hhhmm...jeg har læst op på sagen. Det viser sig, at der er mulighed for at lave en kombineret søgning ved at linke index server og SQL-server sammen. Jeg vil lige forsøge at jagte en sådan løsning.
Godt så...jeg har fundet en løsning, og hvis der er nogen, der er interesserede, så kan i læse nedenfor, hvad der er gjort:
Der er mulighed for at lave en kombineret søgning både i Index Server og SQL Server. Konkret gøres dette ved, at der i SQL Server oprettes felter, som indeholder f.eks. filnavnet.
Derefter oprettes der en forbindelse imellem SQL Server og Index Serverens katalog via følgende kommando, som kan udføres i Query Analyzer: sp_addlinkedserver <LinkedServerNavn>,'Index Server','MSIDXS',<Catalog navn>
En kombineret søgning kan derefter foretages via følgende SQL: SELECT * FROM OPENQUERY(ktcweb, 'select DocTitle, DocAuthor, vpath, path, filename, Rank, size, write, create, characterization, DocCategory from scope() WHERE CONTAINS (DocTitle, ''"QUERY"'') OR CONTAINS (DocAuthor, ''"QUERY"'') OR CONTAINS (filename, ''"QUERY"'') OR CONTAINS (DocCategory, ''"QUERY"'') ') AS IndexResult, Files WHERE Files.FileFriendlyName = FileResult.FILENAME COLLATE database_default
Det sparker r...
Synes godt om
Ny brugerNybegynder
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.