2012-04-02 11 views
0

Was ist der beste Weg, um einen möglichen Teilstring in einem anderen String zu finden, mit MySQL und/oder PHP?Finde einen möglichen Teilstring in einem anderen String mit mysql

Ich habe Skript, um durch meine Liste von E-Mails gehen, und PHP verwenden, um sie zu bewerten, zu kategorisieren und anzuzeigen, basierend auf meiner berechneten Priorität. Der schwierige Teil ist, dass ich eine Liste von Themen in meiner Datenbank habe, die ich überprüfen muss, und ich Themen vom E-Mail-Thema gegen meine "Themen" Tabelle abstimmen möchte.

Um es einfach zu halten sagen wir ein Thema ist "LAST REMINDER FOR 2012 FIRST QUARTER DRAWS (OFFICIAL RELEASE).", und in meiner Datenbank habe ich ein passendes Thema "first quarter draws". Was wäre die beste Methode, um diesen Rekord zu finden?

Gibt es dafür eine MySQL-Funktion? oder wie würdest du das machen? Ich kann nur daran denken, die Betreffzeile manuell in Wörter aufzuteilen und eine Abfrage für jedes Wort auszuführen und dann nach der ID mit den meisten Übereinstimmungen zu sortieren. aber es scheint mir ziemlich kompliziert und es sollte eine bessere Lösung geben oder etwas, das bereits mit einer MySQL-Funktion gelöst wurde.

Ich habe mir schon die Titel "Fragen mit ähnlichen Titeln" angesehen, aber die helfen mir nicht, weil sie davon ausgehen, dass mein Teilstring bekannt ist.

Antwort

2

A wie Bedingung sollte dieses Problem lösen:

SELECT * FROM table WHERE field LIKE '%first quarter draws%' 
+0

Sorry, aber das ist falsch und nicht meine Frage beantworten. Ich bin mir der grundlegenden MySQL-Sytax bewusst; Das Hauptproblem hier ist jedoch, dass ich den Teilstring 'erste Viertelzüge' (noch) nicht kenne. Ich habe nur meine Betreffzeile "LETZTE ERINNERUNG FÜR DAS ERSTE QUARTAL 2012 (OFFIZIELLE RELEASE)" und eine Tabelle mit ~ 6000 Datensätzen, die den Datensatz "Verlosungen des ersten Quartals" enthalten können (oder auch nicht!). Wie finde ich die beste Übereinstimmung? – iHaveacomputer

+0

Tut mir leid, ich habe Probleme, Ihre Frage zu verstehen. Re-reading Ich denke, dass Sie nach der Volltextübereinstimmung suchen und nach Relevanz sortieren: http://devzone.zend.com/26/using-mysql-full-text-searching/ Sie könnten Ihrem Themenfeld einen FULLTEXT-Index hinzufügen und vergleiche es mit deinem $ Thema. –

-1

Try this:

if(substr_count(strtolower($subject), strtolower($topic)) > 0){ 
return true; 
} 
return false; 
+0

Das ist wirklich unnötig. Es konnte nur getan werden, nachdem alles abgerufen wurde und es gibt eine Funktion dafür: http://us3.php.net/manual/en/function.strpos.php – Navarr

+0

Ja, das wird auch nicht helfen. Siehe meine Frage: "... Ich habe mir hier schon die" Fragen mit ähnlichen Titeln "Titeln angesehen, die mir aber nicht weiterhelfen, da sie davon ausgehen, dass meine Teilzeichenfolge bekannt ist." – iHaveacomputer

Verwandte Themen