Wie funktioniert eigentlich die Suche nach ähnlichen Wörtern? Wie geht das bei Google mit der Funktion "Meinten Sie" überhaupt? Wie erkennt eine Suchmaschine überhaupt Double Content? Eine mögliche Methode könnten Funktion wie die PHP-Funktion Soundex, Levenshtein oder Metaphone sein. Wobei hier nicht unbedingt PHP zum Einsatz kommen muss. Auch in anderen Programmiersprachen kann man solche Funktionen benutzen. Im einfachsten Falle möchte man aber bestimmte Wörter vergleichen oder ähnliche Wörter ausgeben lassen. Dazu müsste man bestimmten Wörtern einen Code vergeben, was dann die Suche in einer Datenbank vereinfacht.
Die Grundlage besteht eigentlich darin, dass man Strings und die Anordnung von Zeichen (teilweise Rekursion) vergleicht. Mittels PHP gibt es dazu folgende Beispiele:
soundex — Berechnet die Laut-Ähnlichkeit eines Strings
Soundex() erzeugt einen String aus 4 Zeichen, der aus einen Buchstaben und 3 Zahlen besteht. Für einfache Anwendungen kann hier nach dem Anfangsbuchstaben und der ersten Zahl gesucht werden. Bei zusammengesetzen Begriffen oder ganzen Sätzen wird das ganze schon sehr ungenau und ist nicht mehr zuverlässig.
<?php
echo soundex('maus'), '<br>';
echo soundex('haus'), '<br>';
echo soundex('raus'), '<br>';
echo soundex('hausbau'), '<br>';
echo soundex('mausfalle'), '<br>';
?> M200
H200
R200
H210
M214 <?php
echo metaphone('maus'), '<br>';
echo metaphone('haus'), '<br>';
echo metaphone('raus'), '<br>';
echo metaphone('hausbau'), '<br>';
echo metaphone('mausfalle'), '<br>';
?> MS
HS
RS
HSB
MSFL <?php
echo metaphone('Gibt den Metaphon-Schlüssel als Zeichenkette zurück.'), '<br>';
echo metaphone('Gibt den Hausschlüssel zurück.'), '<br>';
echo metaphone('Gibt den Wohungsschlüssel zurück.'), '<br>';
?> JBTTNMTFNSXLSLLSSXNKTSRK
JBTTNHSXLSLSRK
JBTTNWHNKSXLSLSRK <?php
echo levenshtein('haus', 'maus'), '<br>';
echo levenshtein('haus', 'maus'), '<br>';
echo levenshtein('haus', 'hammer'), '<br>';
echo levenshtein('haus', 'kunsthochschule'), '<br>';
?> 1
1
3
13 <?php
similar_text('haus', 'maus', &$p);
echo $p, '<br>';
similar_text('haus', 'maus', &$p);
echo $p, '<br>';
similar_text('haus', 'hammer', &$p);
echo $p, '<br>';
similar_text('haus', 'kunsthochschule', &$p);
echo $p, '<br>';
?> 75
75
40
21.052631578947