Fulltext search in huidige query
Momenteel heb ik deze query:
Nu heb ik (om fulltext er in te integreren) dit al geprobeerd:
Maar dit geeft echter 0 (nul) resultaten terug bij een zoekactie naar: 'kip', terwijl er wel degelijk een recept aanwezig is met als titel het woord kip er in.
Iemand enig idee hoe dat zou moeten?
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$sql = "SELECT SQL_CALC_FOUND_ROWS r.id, r.titel, r.datumGeplaatst, (SELECT ROUND(s.totaalGetal / s.aantalStemmen, 1) ) AS waardering, cat.categorieNaam
FROM recepten AS r
LEFT JOIN stemmen AS s
ON r.id = s.receptenID
LEFT JOIN categorie AS cat
ON r.id = cat.id
WHERE r.goedGekeurd = 1 ORDER BY DATE(r.datumGeplaatst) DESC LIMIT " . $smartyPaginate->getCurrentIndex() . "," . $smartyPaginate->getLimit();
FROM recepten AS r
LEFT JOIN stemmen AS s
ON r.id = s.receptenID
LEFT JOIN categorie AS cat
ON r.id = cat.id
WHERE r.goedGekeurd = 1 ORDER BY DATE(r.datumGeplaatst) DESC LIMIT " . $smartyPaginate->getCurrentIndex() . "," . $smartyPaginate->getLimit();
Nu heb ik (om fulltext er in te integreren) dit al geprobeerd:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
$sql = "SELECT SQL_CALC_FOUND_ROWS *, (SELECT ROUND(s.totaalGetal / s.aantalStemmen, 1) ) AS waardering, cat.categorieNaam, MATCH (r.titel, r.ingredienten, r.instructies) AGAINST
('" . $zoekwoorden . "' IN BOOLEAN MODE) AS score
FROM recepten AS r
LEFT JOIN stemmen AS s
ON r.id = s.receptenID
LEFT JOIN categorie AS cat
ON r.id = cat.id
WHERE r.goedGekeurd = 1 AND MATCH (r.titel, r.ingredienten, r.instructies) AGAINST ('" . $zoekwoorden . "' IN BOOLEAN MODE) ORDER BY score DESC LIMIT " . $smartyPaginate->getCurrentIndex() . "," . $smartyPaginate->getLimit();
('" . $zoekwoorden . "' IN BOOLEAN MODE) AS score
FROM recepten AS r
LEFT JOIN stemmen AS s
ON r.id = s.receptenID
LEFT JOIN categorie AS cat
ON r.id = cat.id
WHERE r.goedGekeurd = 1 AND MATCH (r.titel, r.ingredienten, r.instructies) AGAINST ('" . $zoekwoorden . "' IN BOOLEAN MODE) ORDER BY score DESC LIMIT " . $smartyPaginate->getCurrentIndex() . "," . $smartyPaginate->getLimit();
Maar dit geeft echter 0 (nul) resultaten terug bij een zoekactie naar: 'kip', terwijl er wel degelijk een recept aanwezig is met als titel het woord kip er in.
Iemand enig idee hoe dat zou moeten?
Gewijzigd op 01/01/1970 01:00:00 door GaMer B
Gesponsorde koppelingen:
@ superwauwie: je post heeft niets met de vraag te maken en lijkt dus op spam. Let daar even op please.
@ TS: in FULLTEXT search is er een minimum lengte voor zoekwoorden. Ik weet niet uit mijn hoofd of 3 letters getolereerd wordt. Misschien moeten het er minstens 4 zijn. Ik zal even zoeken.
Bron: MySQL handleiding
@ TS: in FULLTEXT search is er een minimum lengte voor zoekwoorden. Ik weet niet uit mijn hoofd of 3 letters getolereerd wordt. Misschien moeten het er minstens 4 zijn. Ik zal even zoeken.
Quote:
Any word that is too short is ignored. The default minimum length of words that are found by full-text searches is four characters.
Bron: MySQL handleiding
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Blijkbaar is het inderdaad de minimum lengte. Omelet doet het bijvoorbeeld weer wel en het woordje 'voor' doet het ook, dus het zal wel een minimum lengte van 4 zijn.
Edit:
Oke, is het handig om te overwegen om de minimum lengte te alteren?
Gewijzigd op 01/01/1970 01:00:00 door GaMer B
Zie mijn vorige edit ;-)
Minimum lengte veranderen kan, maar ik weet niet wat dat doet voor de snelheid. Je zou ook een nieuwe query kunnen runnen als je eerste nul resultaten oplevert. Die tweede doe je dan IN BOOLEAN MODE. Die kijkt ook naar delen van woorden en korte woorden.
Minimum lengte veranderen kan, maar ik weet niet wat dat doet voor de snelheid. Je zou ook een nieuwe query kunnen runnen als je eerste nul resultaten oplevert. Die tweede doe je dan IN BOOLEAN MODE. Die kijkt ook naar delen van woorden en korte woorden.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn



