Soms laat mysql fulltext search geen resultaten zien, wanneer dat wel zou moeten
Ik zoek bijvoorbeeld naar de auteur 'Peter Schmidt'. Als ik zoek op 'Peter', krijg ik de juiste auteur te zien, maar als ik zoek op 'Schmidt', laat de html tabel de andere auteurs zien met die naam, maar niet de juiste. De auteurs kolom bestaat uit 'achternaam, naam' (Schmidt, Peter).
Dit is een stukje van mijn code:
$author = mysql_real_escape_string($_GET['author']);
$sql = "SELECT * FROM books WHERE MATCH(author) AGAINST ('$author' IN BOOLEAN MODE)";
$query = mysql_query($sql);
if (!$query) {
echo 'We cannot find the author you are searching for. Please try again.';
echo '<a href="'.$_SERVER['PHP_SELF'].'" class="back" style="margin:0;" title="Go back">» Go back</a>';
} else {
echo '<p>These authors match your query:</p><table>'
while ($result = mysql_fetch_array($query)) {
echo '<tr><td>'.$result['author'].'</td></tr>';
}
echo '</table>'
}
Wat veroorzaakt dit probleem?
Alvast bedankt voor de hulp!
Gewijzigd op 07/10/2014 15:20:54 door Steven Hoogervorst
Als je 'We cannot find the author you are searching for. Please try again.' te zien krijgt kan het ook zijn dat de query is misliukt. Bouw dus eerst eens nette foutafhandeling in.
Wanneer ik de like operator gebruik, maakt dit helaas geen verschil.
Waar zoek je dan op? Gebruik je meerdere woorden?
Toevoeging op 07/10/2014 20:49:08:
Het is gelukt. De database had een verkeerde karakterset, waardoor sommige kolommen over het hoofd werden gezien.
Deze code heb ik bovenaan toegevoegd:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
mb_internal_encoding("UTF-8");
mysql_query("SET character_set_client = utf8;");
mysql_query("SET character_set_results = utf8;");
mysql_query("SET collation_connection = utf8_general_ci;");
?>
mb_internal_encoding("UTF-8");
mysql_query("SET character_set_client = utf8;");
mysql_query("SET character_set_results = utf8;");
mysql_query("SET collation_connection = utf8_general_ci;");
?>
Gewijzigd op 07/10/2014 20:49:52 door Steven Hoogervorst