Ich arbeite an einem Projekt, das eine Suchmaschine benötigt.
Ich bin mir der MySQL-Funktion FULLTEXT IN BOOLEAN MODE bewusst. Aber meine aktuelle Implementierung kann einfach durch Hinzufügen von Anführungszeichen in dem Textfeld gebrochen werden ...
Was ich brauche:
eine Suchmaschine, die wie +obligatory
für Funktionen ermöglicht, optional
, "complete phrase"
und -mustNotContain
und sortiert die Ergebnisse entsprechend (die meisten Matches auf Top etc.)
Implementieren (fast) voll funktionsfähig Volltextsuche mit PHP + mysql
Mögliche Lösungen ich denke an:
eine Funktion, die den Suchbegriff in einer Art und Weise entweicht, die genannten Eigenschaften bestehen bleiben, aber der MySQL wird nicht wütend, wenn die Syntax völlig falsch ist.
Ein komplett mysql-unabhängige in PHP geschrieben Suchalgorithmus (Bitte sagen Sie mir, ob es irgendwelche Bibliotheken würden Sie vorschlagen), die die gleiche Sache tut (und erlaubt es vielleicht für Auto komplett - komplett optional)
wenn Sie sich fragten, was meine aktuelle Implementierung ist, ist es zur Zeit etwas Grundsätzliches und unfertig wie
$result = $mysqli -> query("SELECT * FROM table WHERE MATCH(TITLE) AGAINST('$q' IN BOOLEAN MODE) ORDER BY MATCH(TITLE) AGAINST('$q' IN BOOLEAN MODE)")
Jede Hilfe ist willkommen!
** WARNUNG **: Wenn Sie 'mysqli' verwenden, sollten Sie [parametrisierte Abfragen] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) und [' bind_param' verwenden ] (http://php.net/manual/en/mysqli-stmt.bind-param.php), um Benutzerdaten zu Ihrer Anfrage hinzuzufügen. ** Verwenden Sie NICHT ** String-Interpolation oder Verkettung, um dies zu erreichen, weil Sie einen schwerwiegenden [SQL injection bug] erstellt haben (http://bobby-tables.com/). ** NIEMALS ** $ _POST 'oder' $ _GET' Daten direkt in eine Abfrage einfügen, es kann sehr schädlich sein, wenn jemand versucht, Ihren Fehler auszunutzen. – tadman
Schreiben Sie Ihre eigene Suchmaschine ist sehr, sehr schwer. Wenn die Volltextsuche nicht angemessen ist, sollten Sie Tools wie [Elastische Suche] (https://www.elastic.co) oder [Sphinx] (http://sphinxsearch.com) verwenden. Wenn Sie Ihre eigene Suchmaschine schreiben könnten, würden Sie für Google arbeiten. – tadman
Ich weiß, aber bevor mein Projekt fertig ist, ist es einfacher ... – RoiEX