login  Naam:   Wachtwoord: 
Registreer je!
 Forum

fulltext search werkt maar half

Offline vinTage - 05/01/2006 01:14 (laatste wijziging 05/01/2006 01:16)
Avatar van vinTageNieuw lid Okay, heb ik eindelijk mn fulltext search aan de gang, ...werkt hij maar voor de helft.

Hij doorzoekt netjes de db, en geeft ook netjes de resultaten weer.
Maar, als je de + of - gebruikt, worden die totaal genegeerd.
bijv: ik zoek op '+eiken-lak', dan zouden er imo alleen resultaten geshowed moeten worden die eiken bevatten, en niet lak...hij showed dus ook de resultaten met lak...

En als ik zoek op 'eik', dan vind hij niets, maar zoek ik op 'eiken' dan vind hij er wel...

Zo zullen er nog wel dingen zijn die niet goed werken, maar die heb ik nog niet ontdekt omdat ik hier nog volop mee bezig was.

Hier kan een "half werkend" voorbeeld vinden.(dus test maar een eind weg)

Hieronder heb ik een MEGA gestripte versie gezet, mischien dat iemand het ziet..

  1. <?php
  2. include("config.php");
  3. $gevraagd = mysql_real_escape_string($_GET['gezocht']);
  4.  
  5. $qGetTypes = mysql_query
  6. ("SELECT DISTINCT prod_leverancier FROM online_parket WHERE
  7. MATCH(prod_leverancier, prod_naam, prod_lijn, prod_type, prod_houtsoort, prod_afwerking)
  8. AGAINST('".$gevraagd."'IN BOOLEAN MODE)") or die (mysql_error());
  9.  
  10. //verder met de query uitlezen
  11. while ($aType = mysql_fetch_array($qGetTypes)){
  12.  
  13. echo "<tr><h1>".$aType['prod_leverancier']."</h1></tr>";
  14.  
  15. $qGetOther = mysql_query
  16. ("SELECT * FROM online_parket
  17. WHERE prod_leverancier = '".$aType['prod_leverancier']."'
  18. AND (
  19. MATCH(
  20. prod_leverancier, prod_naam, prod_lijn, prod_type, prod_houtsoort, prod_afwerking)
  21. AGAINST('".$gevraagd."' IN BOOLEAN MODE))") or die (mysql_error());
  22.  
  23. while ($aOther = mysql_fetch_array($qGetOther)) {
  24.  
  25. $id = $aOther['id'];
  26. $leverancier = htmlentities($aOther['prod_leverancier'], ENT_QUOTES);
  27. $url = htmlentities($aOther['prod_url'], ENT_QUOTES);
  28. $naam = htmlentities($aOther['prod_naam'], ENT_QUOTES);
  29. $type = htmlentities($aOther['prod_type'], ENT_QUOTES);
  30. $houtsoort = htmlentities($aOther['prod_houtsoort'], ENT_QUOTES);
  31. $afwerking = htmlentities($aOther['prod_afwerking'], ENT_QUOTES);
  32. $onzeprijs = htmlentities($aOther['prod_onzeprijs'], ENT_QUOTES);
  33. $adviesVKprijs = htmlentities($aOther['prod_adviesVKprijs'], ENT_QUOTES);
  34. $comment = htmlentities($aOther['prod_comment'], ENT_QUOTES);
  35.  
  36. ?>
  37. <tr>
  38. <td><a href ="#"> <?=$leverancier?></a></td>
  39. <td><a href ="#"><?=$naam?></a></td>
  40. <td><?=$type?></td>
  41. <td><?=$houtsoort?></td>
  42. <td><?=$afwerking?></td>
  43. <td><?=$onzeprijs?> &euro;</td>
  44. <td><?=$adviesVKprijs?> &euro;</td>
  45. </tr>
  46. <?php } }?>

12 antwoorden

Gesponsorde links
Offline Ibrahim - 13/01/2006 09:49 (laatste wijziging 13/01/2006 09:51)
Avatar van Ibrahim PHP expert AGAINST('".$gevraagd."'IN BOOLEAN MODE

een gokje maar moet daar niet tussen een [spatie] ? ben niet zo algemeen goed in fulltext...

edit: en % % tussen '".$gevraagd."' ?
Offline Rens - 13/01/2006 09:56
Avatar van Rens Gouden medaille

Crew algemeen
Die %-tekens werken alleen bij LIKE.
http://www.site...amp;id=423
Tutorial van Tuinstoel, zie je ook nergens een %-teken...
Offline Ibrahim - 13/01/2006 10:02 (laatste wijziging 13/01/2006 10:04)
Avatar van Ibrahim PHP expert ja maar ik had hetzelfde probleem en toen zag ik op een forum en deed hetzelfde en toen werkte hij wel ik weet niet hoe maar ja..

ik ben (zoals ik al zei) niet algemeen goed in fulltext

heb net op mysql.com/fulltext gekeken en je hebt geen % % nodig 
Offline rambo - 13/01/2006 15:28
Avatar van rambo HTML beginner Een spatie doet wonderen:

http://www.vint...en%20-olie
Offline vinTage - 13/01/2006 15:47
Avatar van vinTage Nieuw lid WOOHOO het ziet er naar uit dat je daarin gelijk hebt 

Desalnieteplus moet "orego" ook resultaat geven, het zijn meer dan 4 characters, maar hij vind niets "oregon" staat wel in de db.
Offline Ibrahim - 13/01/2006 16:18 (laatste wijziging 13/01/2006 16:44)
Avatar van Ibrahim PHP expert je moet een * erbij zetten, aangezien je een wildcard moet gebruiken

@ hieronder

volgens mij kun je geen * voor de naam zetten

edit: kan wel sorry 
Offline vinTage - 13/01/2006 16:21 (laatste wijziging 13/01/2006 16:25)
Avatar van vinTage Nieuw lid holy canoly je hebt gelijk 

Eigenlijk werkt mn fulltext al heel de tijd, alleen moet ik nog wat klooien met die bool zooi 

thx dudes, ik denk dat ik er wel aan ga uitkomen

edit
als je zoekt op cant* dan vind je "canterbury"
als je zoekt op *bury dan vind je "niks"
Dat is het dus ook niet helemaal.
Offline Ibrahim - 13/01/2006 16:49
Avatar van Ibrahim PHP expert * kun je gebruiken om begin of eind van een woord te laten "vullen" door mysql. Alleen * kun je niet gebruiken als een zoekresultaat binnen een woord zit

Conclusie:

* gebruik voor begin/eind woord
* kan niet gebruikt worden om letters dat in een woord zit te raden
Offline vinTage - 13/01/2006 17:02 (laatste wijziging 13/01/2006 17:03)
Avatar van vinTage Nieuw lid volgens mij spreek je jezelf ietwat tegen ?

Citaat:
* gebruik voor begin/eind woord
* kan niet gebruikt worden om letters dat in een woord zit te raden



*bury zou dan toch een result moeten geven ?
Offline Ibrahim - 13/01/2006 17:11
Avatar van Ibrahim PHP expert Cranbury <<--- bury zit in woord Cranbury dus *bury kan niet

*Cran <<-- kan niet

Cran* <<-- kan wel

*bury <<-- kan niet

bury* <<-- kan niet

je hebt gelijk eind woord kun je niet doen ik bedoelde cran*
Offline Rens - 13/01/2006 17:12 (laatste wijziging 13/01/2006 17:13)
Avatar van Rens Gouden medaille

Crew algemeen
Waarom zou *bury niet gaan?
*bury is alles wat eindigt op bury (lijkt me).

Ik quote uit Tuinstoel zijn tutorial
Citaat:
* Een wildcard, dus het maakt niet uit wat er dan staat.
Offline vinTage - 13/01/2006 17:20
Avatar van vinTage Nieuw lid idd, maar dat werkt dus nog niet.
Wel als je hem achter een stukje woord zet bv "stock*" levert stockholm op.

Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.39s