Frage zu Volltextkatalogen und contains

11/06/2008 - 19:10 von Holger | Report spam
Hallo,

ich habe eine Produktdatenbank mit ca. 300.000 Produkten und teilweise
ausführlichen Beschreibungen. Jetzt habe ich auf diese Produktdatenbank einen
Volltextkatalog gesetzt, und versuch mit contains ein Ergebnis zu erhalten.
Allerdings bekomme ich falsche Ergebnisse.

select * from Produkte where Beschreibung like '%laser%'

liefert ca. 3.000 Produkte

select * from Produkte where contains (Beschreibung, 'laser')
liefert ca. 1.000 Produkte.

Jetzt habe ich herausgefunden dass contains (Beschreibung, ' "laser*" ')
gleichzusetzen mit like 'laser%' ist.

Gibt es eine Lösung àhnlich wie like '%laser%' in Volltextkatalogen zu
suchen um auch zB Aculaser zu erhalten?

Vielen Dank für Eure Hilfe.

Greetings from
Holger
 

Lesen sie die antworten

#1 Elmar Boye
12/06/2008 - 15:28 | Warnen spam
Hallo Holger,

Holger schrieb:
ich habe eine Produktdatenbank mit ca. 300.000 Produkten und teilweise
ausführlichen Beschreibungen. Jetzt habe ich auf diese Produktdatenbank einen
Volltextkatalog gesetzt, und versuch mit contains ein Ergebnis zu erhalten.
Allerdings bekomme ich falsche Ergebnisse.

select * from Produkte where Beschreibung like '%laser%'

liefert ca. 3.000 Produkte

select * from Produkte where contains (Beschreibung, 'laser')
liefert ca. 1.000 Produkte.

Jetzt habe ich herausgefunden dass contains (Beschreibung, ' "laser*" ')
gleichzusetzen mit like 'laser%' ist.



Nein, so einfach ist es nicht. Zunàchst: Falsch ist das Ergebnis nicht!

Wàhrend LIKE nur einfach Zeichenketten vergleicht und "%" dabei
für beliebige Zeichen steht, arbeitet die Volltextsuche mit
wesentlich komplexeren Algorithmen.
Wörter werden zunàchst in ihre Bestandteile zerlegt,
wobei die Sprache eine Rolle spielt. Siehe:
<URL:http://msdn.microsoft.com/de-de/lib...9.aspx>

Verglichen werden schließlich die Worte und ggf. ihre Stàmme.
Eine CONTAINS(..., 'laser') gegen ein Wörterbuch[1] findet so neben
Laser z. B. Abtastlaserstrahl, Doppelpulslaser, Laserschweißen uam.

Etwas wie "aculaser" (manuell hinzugefügt) allerdings nicht,
da es als einzelnes Wort behandelt wird.
Im Gegensatz zu LIKE ist "*" nur am Ende zulàssig und àndert
somit auch nichts am Suchergebnis.

Orthographisch ist "acu" sowieso fragwürdig, englisch wàre "accu",
deutsch "akku" eher richtig. Nur ist das bei Produktbezeichnungen
eben so eine Sache. Und so klappt das mit der Worttrennung nicht.

Nachhelfen könnte man mit einem (eigenen) Thesaurus. Nur ist das für
Produktbezeichnungen eine mehr als undankbare Aufgabe.

Gibt es eine Lösung àhnlich wie like '%laser%' in Volltextkatalogen zu
suchen um auch zB Aculaser zu erhalten?



Pragmatischer ist es deswegen am Ende, zusàtzlich LIKE zu verwenden.

Gruß Elmar

[1] http://dict.tu-chemnitz.de/

Ähnliche fragen