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?
Gesponsorde koppelingen:
kan je iets met een andere zoekmethode ?
Kijk bijvoorbeeld eens naar: http://www.phphulp.nl/php/script/snippets/database-zoekfuncite-met-boolean-mode/1531/
Kijk bijvoorbeeld eens naar: http://www.phphulp.nl/php/script/snippets/database-zoekfuncite-met-boolean-mode/1531/
Is dat ook de methode waarbij zoekopdrachten met minder dan 4 characters niet werken?
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? :)
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? :)
Er bestaan inderdaad hele zoek-algoritmen. In jouw geval, zou ik 2 verschillende algoritmen gebruiken. De eerste zoekt zoals je nu doet, de gehele zoekterm in de query.
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)
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)
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.
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
Hoe importeer ik CONVERT(expr USING transcoding_name) in deze zoekopdracht?
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) ."%')");
?>
Ik heb nog geen oplossing gevonden voor het probleem uit de openingspost.
Zou iemand me kunnen helpen?
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



