Frage von userfromberlin, 40

PHP - Suchfunktion: Wie kann ich Wortformen in die Suche einschließen?

Hallo!

Ich habe eine PHP-Suche für meine Webseite geschrieben, die auch ganz gut funktioniert. Allerdings habe ich keine Ahnung, wie ich einstellen kann, dass bei der Suche nach Auto auch Autos und der Suche nach Firma auch Firmen kommen, also dass Wortformen inkludiert sind. Eine manuelle Lösung (-e, -en, -em, -es, -s) macht angesicht der vielen Ausnahmen der deutschen Sprache keinen Sinn. Doch habe ich keine Ahnung, ob es eine open source API oder Datenbank gibt.

Vielen Dank

Jonathan

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von RakonDark, 28

Soundex-Werte haben die Eigenschaft, dass ähnlich ausgesprochene Wörter den gleichen Soundex-Wert erzeugen.

http://php.net/manual/de/function.soundex.php

Kommentar von RakonDark ,

übrigens findest du da auch deine benötigte mehrzahlsuche

levenshtein() - Berechnet die Levenshtein-Distanz zwischen zwei Stringsmetaphone() - Berechnet den Metaphone-Schlüssel eines Stringssimilar_text() - Berechnet die Ähnlichkeit zweier Zeichenketten


ein mix aus der sache sollte dich zum erfolg bringen

Antwort
von RakonDark, 29

das ganze nennt sich unscharfes text matching

oder auch fuzzy logic , wie du das nun in php bekommst ist so eine sache

auf linux könntest du es via kommandozeile machen und entsprechende tools

schau mal hier https://de.wikipedia.org/wiki/Unscharfe\_Suche


Kommentar von RakonDark ,

hab da sogar ein artikel gefunden

http://www.pc-magazin.de/ratgeber/fuzzy-suche-mit-php-150630.html


und http:/ / php.net/manual/de/function.soundex.php

Antwort
von suziesext04, 40

hi userfromberlin - gibt es bei PHP keine Suchfunktion wie zb LeftStr(a,b) also wo de sagst if LeftStr(a,b)=such$ ? also du hast n String a, b ist len(such$) dann durchsuchst du immer in dem String nur von links zb such$=auto, was hinterher kommt ist egal? So kenn ich es jedenfalls von Pascal, Delphi und Visualbasic. Haste keine PHP Funktionenreferenz?

Kommentar von userfromberlin ,

Nee, danach suche ich nicht ganz. es gibt zu viele unregelmäßige Mehrzahlen wie "Firmen" statt "Firmaen". Aber danke für die Antwort.

Kommentar von suziesext04 ,

hi - dann suchste eben, "Firm*", so wie bei Google. Also den Suchstring machste nur so lang wie nötig, und sagste dann nur bis da, was anschliessend steht, ist egal. So ne Funktion gibt es doch bestimmt auch in PHP, such in der Referenz, nach der genauen Syntax.

Kommentar von userfromberlin ,

Das wäre mit RegEx ohne weiteres möglich, doch dann wäre ja auch Firmensitz und Firmenkantine drin, das will ich aber nicht );.

Kommentar von suziesext04 ,

nein, nicht Regex. Du sollst in den Stringfunktionen von PHP nackkiecken, da sind die ganzen Suchfuntkionen.

Kommentar von RakonDark ,

Wie in meiner letzten antwort . Die Funktion nennt sich soundex . Viel erfolg .

Antwort
von Lupex, 34

wenn du eine suche "geschrieben" hast.. dann suche nach XXXXXXXn oder XXXXXXe oder was weiss ich noch..  ist doch kein problem.. allerdings, so wie du dich ausdrückst bezweifle ich den wahrheitsgehalt deiner aussage..

es gibt da noch den OSS .. der übernimmt sowas autimatisch.. erfordert allerdings etwas know how in sachen PHP, mySQL, und grundverständniss

Kommentar von userfromberlin ,

Wieso so angreifend? Ich habe eine Suche mit RegEx geschrieben. Damit habe auch auch know how und Grundverständnis; das kannst Du getrost voraussetzen. Also: Was ist der OSS?

Kommentar von RakonDark ,

Wundert mich auch , er hat schon keine Ahnung von dem Thema und ist dann so belehrend . Hätte er dich auf soundex hingewiesen wäre Dir eher geholfen .

Keine passende Antwort gefunden?

Fragen Sie die Community