15. juni 2004 - 10:11Der er
27 kommentarer og 1 løsning
Søgning i text felt i MS SQL
Jeg skal have lavet en søgefacilitet som søger i et text felt i en MS SQL database. Jeg ved godt man ikke kan søge på et text felt men der må en være en måde man kan omgå problemet?
Hvis det bare er en simpel søgning på et enkelt ord, kan du bruge LIKE i din query:
SELECT * FROM Tabel1 WHERE tekstfelt LIKE '%per%'
Vil finde felter indeholdene: per,topper,perfekt Altså hvor søge-strengen "per" står i en af enderne af ordet. Den ville ikke finde f.eks eksPERten.
Skal du have en mere avanceret søgefunktion, der kan søge på flere ord, bøjninger af ord samt sortere efter relevans, bliver du nødt til at lave et full-text-catalog og lave dine queries på det catalog.
Synes godt om
Slettet bruger
15. juni 2004 - 10:24#2
det kan man ikke i en MS SQL database...det er lidt det spørgsmålet går ud på...
Du havde ikke nævnt det var et blob felt før. Hvilken type data har du i feltet? word-dokumenter? ren tekst?
Du kan lave et full-text-catalog over et blob-felt og angive et filter ( .doc, .txt, .ppt etc. ). Så skulle du kunne lave alm. full-text queries på det catalog.
Synes godt om
Slettet bruger
15. juni 2004 - 10:50#8
Ok..my bad
Men hvordan opretter jeg et full text catalog? (Bær over mede mig er virkelig grøn i MS SQL endnu :-))
Har du "Books online" installeret? Er nok nemmest at læse om det der.
Umiddelbart kan du bare højre klikke på en database i Enterprise Manager og vælge new->Full-text-catalog, og så føgle "wizard'en". Der er dog lidt ekstra indstillinger og design af dine tabeller du skal tage i betragtning når du skal søge på et blob felt. Altsammen noget du kan læse om i Books online.
Nogen speciel grund til ikke at gemme html-filerne i et tekst felt?
Synes godt om
Slettet bruger
15. juni 2004 - 11:31#14
det jeg har gang i er et slags cms system og der gemmer jeg brugerens html sider i text feltet fordi det kan indeholde uendelig meget hvorimod jeg i varchar skal angive hvor mange tegn den skal gemme og det ved jeg jo ikke på forhånd. ER der andre muligheder er jeg lydhør :-)
Hmm, Jeg har en Datatype:text length:16 i en MS SQL 2000. Jeg kan sagtens lave LIKE queries på det felt, og det skulle være stort nok ( op til 2 GB ).
Det kan man måske ikke i 7.0?
Synes godt om
Slettet bruger
15. juni 2004 - 11:45#16
min er akkurat den samme...men når jeg søger finder den ikke noget i det felt selvom jeg ved der ligger det jeg søger...jeg får godt nok heller ikke en fejl???
Det var derfor det ikke virkede...men der er mange herinde der fejlagtigt tror man ikke kan søge på et text felt i MS SQL...Jeg har set flere spørgsmål hvor der henvises til Fulltext index...
Er jo ikke en optimal løsning. Vil f.eks. ikke kunne finde et ord fremhævet med bold <b>tilbud</b> ved en søgning på LIKE '%tilbud%'.
Men er nok det bedste du kan gøre uden full-text-catalogs. Du kunne selvfølgelig også hente ALLE html-filer i databasen, fjerne alle html-tags, og så søge gennem dem med script....men det bliver meget tungt hvis du har mange store rækker i databasen :/
Synes godt om
Slettet bruger
15. juni 2004 - 15:57#27
det synes jeg nu nok at jeg kan...har blandt andet søgt på funktionalitet som står i strengen: <FONT class=Rubrikgul face=""><STRONG>Funktionalitet</STRONG></FONT>
Ja, det er mig der snakkert sort. Du kan jo godt søge i midten af ordet, når der er % i begge ender :-)
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.