Hi,

Könnte schon sein, dass es sowas schon gibt, aber ich habe noch nicht danach
gesucht und kenne deswegen nichts...

> ich würde gerne eine vernünftige Suchfunktion implementieren.
> Da ich aber SQL Server Express nutze, fallen damit die An-
> nehmlichkeiten der großen Varianten raus.
> 
> Meine aktueller Stand ist folgender:
> 
> Bereits beim Eintrag eines Postings (z.B.) in die Datenbank,
> zerlege ich den Text in seine Bestandteile und speichere die
> Wörter einzeln in einer Suchwort-Tabelle, mit Referenz zum
> Posting-Datensatz in der Posting-Tabelle.
> Darauf suche ich dann via SOUNDEX() und DIFFERENCE() sowie
> http://blog.thomasbandt.de/PermaLink,guid,c2a812bd-7c4c-4abc-b
> 2ed-c8f1ac2300
> 91.aspx

Klingt nicht schlecht soweit.
Am besten nimmt man da eine SP, die gleich checkt, ob das Wort schon
existiert.
Und vergiss nicht Listen mit stopwords, sonst läuft Dir die DB voll mit
der/die/das/und etc...

Weiterhin speicherst Du für jedes Wort gleich den soundex in einer eigenen
Spalte, so musst du den relativ komplexen soundex-Algo nicht auf jede Zeile
in der DB erneut anwenden, sondern nur auf das Suchwort.

Die Wortspalte und soundexspalte sollte natürlich indexiert werden und du
solltest mit like 'xxx%' suchen, nicht mit like '%xxx%', sonst bringt der
Index nichts und Du machst trotzdem nen tablescan.

Wenn Du es noch toller machen willst, solltest Du statt soundex mal
DoubleMetaphone versuchen. Dieser Algorithmus liefert nicht nur für Englisch
vernünftige Ergebnisse. Ich hab mal den Algo von PHP nach VBScript geportet,
aber von PHP nach C# ist eh leichter als von VBScript aus, falls Du nicht
sowieso einen C#-Port ergoogeln kannst...


Dann kann man sich schliesslich noch überlegen, ob man das klüger in der DB
ablegen kann bzw. ob man die Abfragen klüger als mit einem EXISTS pro Wort
lösen kann... Denn da werden ORs ganz schön komplex...


Grüsse,

Claudius

_______________________________________________
Coffeehouse Mailingliste, Postings senden an:
[email protected]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/coffeehouse

Antwort per Email an