Tutorials >
MySQL >
Fulltext Search
|
Gepost op: 03 januari 2006 - 22:07 |
|
|
|
Nieuw lid
|
Kan je een voorbeeldje geven hoe je die match() en against() in een query zet?
Ik ben al een uur of 2 aan het klooten met de quotes, maar ik krijg het niet voor elkaar. |
|
|
|
Gepost op: 03 januari 2006 - 22:31 |
|
|
|
PHP expert
|
Eh vrij eenvoudig?
<?php
$sTabel = 'jetabelnaam'; // ff veranderen?!
$sZoek = 'Je zoekterm'; // je zoekterm :O
$sFields = '`quote`'; // de velden war je fulltext op hebt gezet.
$sQuery = "SELECT *, MATCH(".$sFields.") AGAINST('".$sZoek."') AS `score` FROM `".$sTabel."` WHERE MATCH(`".$sFields."`) AGAINST('".$sZoek."')";
if(!$rRes = @mysql_query($sQuery))
{ echo 'Het opvragen van de gegevens is mislukt!'; }
elseif(mysql_num_rows($rRes) == 0)
{ echo 'Geen resultaten of meer dan 50% van de gegevens kwam overeen.'; }
else
{
?>
<table>
<?php
while($aRow = @mysql_query($rRes))
{
?>
<tr>
<?php
foreach($aRow as $sField => $sValue)
{ echo '<td><i>'.$sField.'</i>: '.$sValue.'</td>'; }
?>
</tr>
<?php
}
?>
</table>
<?php
}
?>
<?php $sTabel = 'jetabelnaam'; // ff veranderen?! $sZoek = 'Je zoekterm'; // je zoekterm :O $sFields = '`quote`'; // de velden war je fulltext op hebt gezet. $sQuery = "SELECT *, MATCH(".$sFields.") AGAINST('".$sZoek."') AS `score` FROM `".$sTabel."` WHERE MATCH(`".$sFields."`) AGAINST('".$sZoek."')"; { echo 'Het opvragen van de gegevens is mislukt!'; } { echo 'Geen resultaten of meer dan 50% van de gegevens kwam overeen.'; } else { ?> <table> <?php { ?> <tr> <?php foreach($aRow as $sField => $sValue) { echo '<td><i>'.$sField.'</i>: '.$sValue.'</td>'; } ?> </tr> <?php } ?> </table> <?php } ?>
|
|
|
|
Gepost op: 04 januari 2006 - 16:39 |
|
|
|
Nieuw lid
|
AGAINST('blaat', IN BOOLEAN MODE);
Er mag geen comma staan voor "IN BOOLEAN MODE"
Dat heb je bij al je voorbeeldjes wel gedaan.
thx to JeXuS for telling me |
|
|
|
Gepost op: 04 januari 2006 - 16:50 |
|
|
|
HTML beginner
|
En Tuinstoel,
Gebruik die rare backquotes niet. |
|
|
|
Gepost op: 04 januari 2006 - 17:56 |
|
|
|
PHP expert
|
Citaat: [I][B]leendert[/B] schreef op 04 Januari 2006 - 16:50[/I]
En Tuinstoel,
Gebruik die rare backquotes niet. Backticks heten die, sorry is een verslaving . Gebruik ze express altijd om voor mijzelf duidelijk te maken wat een kolom is, en zo hoef ik ook geen rekening te houden met reserved words. |
|
|
|
Gepost op: 09 januari 2006 - 11:28 |
|
|
|
PHP expert
|
kun je score/relevantie,
wat heb je eraan?
uitleggen en ook de IN_BOOLEAN_MODE
want je legt het niet zo precies uit
edit:
score/relevantie ben ik door na te denken erachter gekomen
nu die IN_BOOLEAN_MODE (zoek ik wel op mysql ) |
|
|
|
Gepost op: 10 januari 2007 - 20:41 |
|
|
|
Nieuw lid
|
Hallo Allemaal,
ik ben nog relatief nieuw met mysql en php, maar ik heb de volgende vraag.
Ik krijg deze melding:
Can't find FULLTEXT index matching the column list
bij de volgende query:
"SELECT *, MATCH(`inhoud`) AGAINST('$zoekterm') AS `relevantie` FROM `paginas` WHERE MATCH(`inhoud`) AGAINST('$zoekterm') ORDER BY relevantie DESC"
Ik heb een avond geprobeerd om dit op te lossen, maar het is mij tot nog toe niet gelukt. Kan iemand van jullie mij hiermee helpen? Als ik meer info moet verstrekken doe ik dat graag.
Table:
CREATE TABLE `paginas` (
`id` smallint(5) NOT NULL auto_increment,
`titel` varchar(100) default '',
`inhoud` text,
PRIMARY KEY (`id`),
FULLTEXT KEY `titel` (`titel`,`inhoud`)
) ENGINE=MyISAM;
Met vriendelijke groet,
Leroy |
|
|
|
Gepost op: 10 januari 2007 - 22:11 |
|
|
|
Nieuw lid
|
Laat maar, het is al gelukt. Wist niet dat er minimaal in drie velden gezocht moest worden. Heb dat ergens terug gevonden in sitemasters. Toch top script / tutorial! |
|
|
Enkel aanvullende informatie is welkom. Geen prijzende of afkeurende reacties. |
|
|
|