Zoekresultaten met leestekens
Code (php)
1
2
3
4
2
3
4
<?php
$search = trim($_GET['search']);
$sql = mysql_query("SELECT * FROM nieuws WHERE titel LIKE '%".mysql_real_escape_string($search) ."%')");
?>
$search = trim($_GET['search']);
$sql = mysql_query("SELECT * FROM nieuws WHERE titel LIKE '%".mysql_real_escape_string($search) ."%')");
?>
In sommige titels van nieuwsitems zitten aanhalingstekens, maar bij het zoeken laten veel mensen die weg.
Bijvoorbeeld de zoekopdracht: Brooklyns Finest.
De titel staat alleen in de database als: Brooklyn's Finest (met aanhalingsteken).
Als je dus zoekt op: Brooklyns Finest (zonder aanhalingsteken) of Brooklyn s Finest (spatie ipv aanhalingsteken), krijg je geen resultaat.
Hoe zorg ik dat er toch de goede resultaten zijn als je bij een zoekopdracht leestekens weglaat?
Kijk bijvoorbeeld eens naar: http://www.phphulp.nl/php/script/snippets/database-zoekfuncite-met-boolean-mode/1531/
Want dat is geen optie, er zitten filmtitels tussen zoals 'yes man' en 'up'...
Is mijn probleem niet op te lossen met de huidige zoekmethode? :)
De andere, zou ik net een tikkeltje anders doen, door per woord te zoeken, en de begin- en eindletters weg te laten. Dus een zoekterm als "Brooklyns Finest" wordt dan %rooklyn% OR titel LIKE %ines%. Uiteindelijk zul je na wat oefenen en spelen een uitstekende algoritme kunnen vinden! (Vergeet overigens niet dat je de zoektermen ook kunt opslaan, hier dagelijks/wekelijks naar kunt kijken en op die manier er dus een "slimme" zoekmachine van te maken)
Ik was hier zelf een poos geleden mee bezig, ik weet dat het wel zo kan.
Als je zoek op a, zul je ook: ä vinden.
Je moet zelf maar even een beetje knutselen. Kijk eventjes op dev mysql.
Erik:
CONVERT(expr USING transcoding_name)
Ik was hier zelf een poos geleden mee bezig, ik weet dat het wel zo kan.
Als je zoek op a, zul je ook: ä vinden.
Je moet zelf maar even een beetje knutselen. Kijk eventjes op dev mysql.
Ik was hier zelf een poos geleden mee bezig, ik weet dat het wel zo kan.
Als je zoek op a, zul je ook: ä vinden.
Je moet zelf maar even een beetje knutselen. Kijk eventjes op dev mysql.
Oke, ga ik mee aan de slag.
Kan het ook werken met aanhalingstekens of alleen met accenten?
Gewijzigd op 27/05/2010 03:25:56 door wessel w
Code (php)
1
2
3
4
2
3
4
<?php
$search = trim($_GET['search']);
$sql = mysql_query("SELECT * FROM nieuws WHERE titel LIKE '%".mysql_real_escape_string($search) ."%')");
?>
$search = trim($_GET['search']);
$sql = mysql_query("SELECT * FROM nieuws WHERE titel LIKE '%".mysql_real_escape_string($search) ."%')");
?>
Wessel:
Zoekfunctie:
In sommige titels van nieuwsitems zitten aanhalingstekens, maar bij het zoeken laten veel mensen die weg.
Bijvoorbeeld de zoekopdracht: Brooklyns Finest.
De titel staat alleen in de database als: Brooklyn's Finest (met aanhalingsteken).
Als je dus zoekt op: Brooklyns Finest (zonder aanhalingsteken), krijg je geen resultaat.
Hoe zorg ik dat er toch de goede resultaten zijn als je bij een zoekopdracht leestekens weglaat?
Code (php)
1
2
3
4
2
3
4
<?php
$search = trim($_GET['search']);
$sql = mysql_query("SELECT * FROM nieuws WHERE titel LIKE '%".mysql_real_escape_string($search) ."%')");
?>
$search = trim($_GET['search']);
$sql = mysql_query("SELECT * FROM nieuws WHERE titel LIKE '%".mysql_real_escape_string($search) ."%')");
?>
In sommige titels van nieuwsitems zitten aanhalingstekens, maar bij het zoeken laten veel mensen die weg.
Bijvoorbeeld de zoekopdracht: Brooklyns Finest.
De titel staat alleen in de database als: Brooklyn's Finest (met aanhalingsteken).
Als je dus zoekt op: Brooklyns Finest (zonder aanhalingsteken), krijg je geen resultaat.
Hoe zorg ik dat er toch de goede resultaten zijn als je bij een zoekopdracht leestekens weglaat?
Zou iemand me kunnen helpen?
Gewijzigd op 30/05/2010 17:29:45 door wessel w
De oplossing van Chris werkt ook niet? Wat voor algoritme heb je geprobeerd?
Blanche PHP op 30/05/2010 18:04:03:
De oplossing van Chris werkt ook niet? Wat voor algoritme heb je geprobeerd?
Die is een beetje omslachtig. Er wordt ook vaak gezocht op titels die aanhalingstekens in het midden van een zoekterm hebben (Qu'un seul tienne, When You're Strange) en dan werkt het niet.
Ik zoek eigenlijk dus echt een manier om de zoekresultaten te laten werken, ook al vergeet je de aanhalingstekens...
En dat is blijkbaar niet mogelijk in php. :P