2017-05-04 1 views
2

Ich habe ein Suchformular und möchte ähnliche Elemente aus der Datenbank anhand des gesuchten Titels auswählen.Wie kann ich ähnliche Datensätze aus MySQL-Datenbank mit PHP auswählen?

Jetzt benutze ich SELECT * FROM movies WHERE title LIKE '%".$_SESSION['search']."%';

Aber z.B. jemand, der nach 'Jurassic Park2' oder 'Jurasic Park 2' sucht, gibt 'Jurassic Park 2' nicht.

Wie kann ich jene Filme auswählen, die einen gewissen Charakterunterschied zum gesuchten Titel haben?

+0

soetwas wie [ 'Volltext search'] (https://dev.mysql.com/doc/refman/5.7/en/fulltext- search.html) :) – hassan

+0

Sie sollten bessere Werkzeuge für dieses Problem versuchen. Bitte berücksichtigen Sie ElasticSearch. –

Antwort

2

Sie suchen Mysql full text search. Hier ist ein tutorial um loszulegen. Grundsätzlich benötigen Sie einen Volltextindex auf dem Feld erstellen (s) Sie suchen möchten, dann können Sie eine Abfrage verwenden ähnliche Werte zu sehen: MATCH (col1,col2,...) AGAINST (expr [search_modifier])

+0

Jetzt verstehe ich, wo 'Mysql Volltextsuche' zu ​​verwenden ist. +1 für das :) –

0

habe ich versucht, die Volltextsuche:

SELECT * FROM movies WHERE MATCH(title) AGAINST('%".$_SESSION['search']."%' IN NATURAL LANGUAGE MODE) > 1 ORDER BY title; 

Ich habe versucht, die 1 bis 0,5 oder andere kleiner als 1 zu schreiben, aber war das gleiche Ergebnis. Es gibt das Ergebnis, wenn es den gesuchten Titel vollständig enthält.

Jurassic gibt Jurassic Welt

aber Jurasic gibt nichts

+1

Bro, nicht '%' hier ''%'. $ _ SESSION ['search']."% ''Einfach Wert in einfache Anführungszeichen gewickelt und versuchen Sie es erneut –

+0

Ich löschte die'% 'aber Nichts hat sich geändert. –

+0

Randnotiz: Sie sollten wahrscheinlich Ihre $ _SESSION ['search'] auch in Ihrer Abfrage, je nachdem, was Sie verwenden, um eine Verbindung mit Ihrer Datenbank herzustellen: http://php.net/manual/en/mysqli.real-escape -string.php – SheperdOfFire

Verwandte Themen