Forums Neueste Beiträge
 

Dokumente in varbinary(max)-Spalte, Auslesen der ersten 200 Zeiche

03/03/2009 - 15:38 von Frank Massel | Report spam
Ein freundliches Hallo an die Newsgroup !

Ich habe in SQL 2005 für eine Volltextsuche eine Tabelle mit den drei dazu
wesentlichen Spalten "ID" int AutoWert, "DateiInhalt" varbinary(max) und
"DateiEndung" varchar(3) eingerichtet:
In einem Datensatz wird dann "eine Datei gespeichert":
Der Inhalt in der Spalte "DateiInhalt" und die (meist dreistellige)
Dateiendung in der Spalte "DateiEndung" (bei uns meistens doc, pdf, txt).

Die Volltextsuche mittels CONTAINS bzw. CONTAINSTABLE funktioniert prima.

Meine Frage bezieht sich nun auf eine komfortablere Darstellung der
Suchergebnisse und zwar:

Kann man für einen Datensatz der o.a. Tabelle z.B. die ersten 40 Wörter/200
Zeichen aus der "Wort-Kette" ausgeben lassen, die von SQL durch Übersetzung
der "DateiInhalt"-Spalte in Wörter für die Volltextsuche erzeugt wurden,
unabhàngig vom DateiTyp (also der "DateiEndung") ?
Bei TXT-Dateiinhalten funktioniert CAST([DateiInhalt] AS varchar(200)), bei
z.B. pdf oder doc werden damit die ersten 200 Zeichen der Datei und nicht die
ersten 200 Zeichen der von SQL interpretierten Text-Wörter ausgegeben.

Sinn: Bei den üblichen Internet-Suchmaschinen wird zu jedem Suchergebnis
auch der Anfang des zugrundeliegenden Textes angezeigt, unabhàngig vom
Dateityp des Suchergebnisses (htm, pdf, doc)...

Oder kann man die "Wörter", die zu einem der o.a. Datensàtze von SQL erzeugt
wurden, im Volltextkatalog abfragen ?

Danke im voraus für jeden Tipp/Hinweis !

Viele Grüße

Frank Massel
 

Lesen sie die antworten

#1 Elmar Boye
04/03/2009 - 09:05 | Warnen spam
Hallo Frank

Frank Massel schrieb:
Meine Frage bezieht sich nun auf eine komfortablere Darstellung der
Suchergebnisse und zwar:

Kann man für einen Datensatz der o.a. Tabelle z.B. die ersten 40 Wörter/200
Zeichen aus der "Wort-Kette" ausgeben lassen, die von SQL durch Übersetzung
der "DateiInhalt"-Spalte in Wörter für die Volltextsuche erzeugt wurden,
unabhàngig vom DateiTyp (also der "DateiEndung") ?



Diese Informationen sind aus dem Volltext Index nicht extrahierbar.

Bei TXT-Dateiinhalten funktioniert CAST([DateiInhalt] AS varchar(200)), bei
z.B. pdf oder doc werden damit die ersten 200 Zeichen der Datei und nicht die
ersten 200 Zeichen der von SQL interpretierten Text-Wörter ausgegeben.



Beim Erstellen werden die Daten über eine Schnittstelle (IFilter)
abgerufen weiterverarbeitet (u. a. in Worte zerlegt). Die Rohdaten
selbst werden nicht gespeichert - da das aus Sicht des Index nur
doppelte Datenhaltung wàre.

Du müssten diese Daten dazu selbst extrahieren und in einer
zusàtzlichen Spalte ablegen.

Die Schnittstellen sind zwar dokumentiert:
<URL:http://msdn.microsoft.com/en-us/library/ms691105(VS.85).aspx>
und z. B. Adobe liefert für PDF eine Erweiterung dazu.

Einfacher dürfte aber die Nutzung von Konvertern sein, die
im Web zu finden sein, da gibt es für alle gàngigen Formate
welche, z. B. für PDF oder auch Word:
<URL:http://www.google.de/search?q=pdf+t...verter>
<URL:http://www.google.de/search?hl=en&a...verter>

Da diese üblicherweise dateibasiert arbeiten, mußt Du
die Daten dafür temporàr auf Platte extrahieren oder
dies bereits vor dem Abspeichern im SQL Server erledigen.

Gruß Elmar

Ähnliche fragen