Ich versuche in einem Suchfeld, Vorschläge aus einer Datenbank herauszuholen.
Dazu gibt es viele Vorschläge.
Ich versuche es mit similar_text.
Dabei stoße ich auf das Problem, dass ab einer gewissen Eingabelänge falsche Werte Angezeigt werden.
Hier der wie ich die Abfrage durchführe:
Und hier der Output:
Gesuchter Text: -Entwicklerinnen und Entwickler und Analytikerinnen und Analytiker von Software und Anwendungen, anderweitig nicht genannt-
Eingabe Text: -sofware enwickler-
Also ab dem 10.Zeichen wird es mir unklar?
Mach ich was falsch,oder...
Danke
Dazu gibt es viele Vorschläge.
Ich versuche es mit similar_text.
Dabei stoße ich auf das Problem, dass ab einer gewissen Eingabelänge falsche Werte Angezeigt werden.
Hier der wie ich die Abfrage durchführe:
PHP-Code:
//test similar_text
$suchText = 'Entwicklerinnen und Entwickler und Analytikerinnen und Analytiker von Software und Anwendungen, anderweitig nicht genannt';
$eingabeText = 'sofware enwickler';
echo "Gesuchter Text: -".$suchText."-<br>";
echo "Eingabe Text: -".$eingabeText."-<br>";
$suchText = preg_replace('/ /','',strtoupper($suchText));
$eingabeText = preg_replace('/ /','',strtoupper($eingabeText));
echo "<table>";
echo "<tr><th></th><th>Vergleichstext</th><th>Idente Zeichen (?)</th><th>% der identen Zeichen</th><th>% von similar_text</th></tr>";
for($i=1;$i<=strlen($eingabeText);$i++) {
$txtpart = substr($eingabeText,0,$i);
$vergleich = similar_text(preg_replace('/ /','',strtoupper($suchText)),preg_replace('/ /','',strtoupper($txtpart)),$percent);
$verproz = $vergleich / (strlen($txtpart));
$percent = round($percent);
echo "<tr><td>".$i."</td><td>".$txtpart."</td><td>".$vergleich."</td><td>".$verproz."</td><td>".$percent."</td></tr>";
}
echo "</table>";
Gesuchter Text: -Entwicklerinnen und Entwickler und Analytikerinnen und Analytiker von Software und Anwendungen, anderweitig nicht genannt-
Eingabe Text: -sofware enwickler-
1 | S | 1 | 1 | 2 |
2 | SO | 2 | 1 | 4 |
3 | SOF | 3 | 1 | 5 |
4 | SOFW | 4 | 1 | 7 |
5 | SOFWA | 5 | 1 | 9 |
6 | SOFWAR | 6 | 1 | 11 |
7 | SOFWARE | 7 | 1 | 12 |
8 | SOFWAREE | 8 | 1 | 14 |
9 | SOFWAREEN | 9 | 1 | 15 |
10 | SOFWAREENW | 9 | 0.9 | 15 |
11 | SOFWAREENWI | 10 | 0.90909090909091 | 17 |
12 | SOFWAREENWIC | 11 | 0.91666666666667 | 18 |
13 | SOFWAREENWICK | 6 | 0.46153846153846 | 10 |
14 | SOFWAREENWICKL | 7 | 0.5 | 11 |
15 | SOFWAREENWICKLE | 8 | 0.53333333333333 | 13 |
16 | SOFWAREENWICKLER | 9 | 0.5625 | 15 |
Also ab dem 10.Zeichen wird es mir unklar?
Mach ich was falsch,oder...
Danke
Kommentar