Smarte Suche für MySQL und WordPress mit mehreren Suchwörtern

Die eingebaute Suche von WordPress ist alles andere als gut, versagt sie doch schon bei mehr als einem Suchwort.

Bevor man aber gleich wieder Plugins installiert, kann man die Sache auch händisch programmieren.

Dazu muss zunächst in MySQL ein Volltext-Suchindex für die relevanten Datenspalten erzeugt werden:

ALTER TABLE `wp_posts` ADD FULLTEXT `MyFullTextIndex` (`post_title`, `post_content`)

Wie man sehen kann, bevorzuge ich die Suche in den Titeln und dem gesamten Textkörper. Wem das aber zu viel des Guten ist, kann es auch auf die Textzusammenfassung begrenzen:

ALTER TABLE `wp_posts` ADD FULLTEXT `MyFullTextIndex` (`post_excerpt`)

Nun kann man ganz einfach gewichtet suchen:

SELECT ID, post_title, MATCH (post_title, post_content) AGAINST ('Suchwort1 Suchwort2 Suchwort3') AS score

FROM wp_posts

WHERE MATCH (post_title, post_content) AGAINST ('Suchwort1 Suchwort2 Suchwort3')

AND post_status = 'publish'

Bingo!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert