Soms laat mysql fulltext search geen resultaten zien, wanneer dat wel zou moeten
Mijn MySQL database table bevat 2510 records. Wanneer ik een string in een kolom probeer te zoeken, gebruikmakende van fulltext search, krijg ik dan soms geen enkel resultaat. Alleen een lege html tabel.
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!
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.
Kun je hier niet beter %LIKE% gebruiken?
Wanneer ik de like operator gebruik, maakt dit helaas geen verschil.
Waar zoek je dan op? Gebruik je meerdere woorden?
Ik zoek op iedere auteur die in de database staat. Het vreemde is dat de juiste auteur soms wel en soms niet wordt getoond.
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:
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




