Is fulltext search de beste manier om een mysql database te doorzoeken en de bestanden te weergeven (dus als zoekmachine voor je site te gebruiken). Of kent iemand hier een sneller/beter script en/of manier? Stel dat fulltext toch het beste is: bij zoekmachines moet je als je dingen toevoegd, die indexeren, ik neem aan dat dit bij fulltext niet hoeft?
Alvast bedankt!
Ik gebruik een script dat met en zonder de boolean werkt, de optimizer zorgt ervoor dat de query niet dubbel wordt uitgevoerd.
SELECT
kolom1,
kolom2,
MATCH( kolom3 ) AGAINST ('$zoekwoord') AS score
FROM
tabel
WHERE
MATCH( kolom3 ) AGAINST ('$zoekwoord' IN BOOLEAN MODE)
ORDER BY
score DESC
Blanche, als ik dit doe i.p.v 'een_bepaald_zoekwoord': '.$zoekterm.' dan wordt er een foutmelding weergegeven dat er een onverwachte T_STRING staat, wat kan ik hier aan doen??
Moderator edit:
Bumpen:
Twee of meer keer achter elkaar in een topic posten heet bumpen.
Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.
Ik gebruik een script dat met en zonder de boolean werkt, de optimizer zorgt ervoor dat de query niet dubbel wordt uitgevoerd.
SELECT
kolom1,
kolom2,
MATCH( kolom3 ) AGAINST ('$zoekwoord') AS score
FROM
tabel
WHERE
MATCH( kolom3 ) AGAINST ('$zoekwoord' IN BOOLEAN MODE)
ORDER BY
score DESC
Klopt dit?
Is kolom3 ook ingesteld als FULLTEXT? Anders werkt het niet natuurlijk.
ik heb nu dit in de html:
<form method="POST" action="searchengine.php">
<input type="text" name="searchterms" />
<input type="submit" name="search" value="Search" />
en dit in de php:
<?php
//uitleg van een var
$searchterms = $_POST['searchterms'];
//de zoekmachine in FULLTEXT
//if($_SERVER['REQUEST_METHOD'] == 'POST') {
$searchresult = SELECT
COUNTRY,
ENTRY,
MATCH( COUNTRY, ENTRY ) AGAINST ('$searchterms') AS score
FROM
VGB_ENTRY
WHERE
MATCH( COUNTRY, ENTRY ) AGAINST ('$searchterms') IN BOOLEAN MODE)
ORDER BY
score DESC
} else {
echo ("U heeft niets ingevuld");
}
print ('.$searchresult.');
?>
Ik hoop dat je hier iets mee kunt
Er zullen sowieso quotes om de query heen moeten, zo werkt het niet. Verder moet je zoals dutchcamel al zegt de kolommen country en entry natuurlijk wel als fulltext ingesteld hebben.
<?php
//uitleg van een var
$searchterms = mysql_real_escape_string($_POST['searchterms']);
//de zoekmachine in FULLTEXT
//if($_SERVER['REQUEST_METHOD'] == 'POST') {
$searchresult = "SELECT
COUNTRY,
ENTRY,
MATCH( COUNTRY, ENTRY ) AGAINST ('".$searchterms."') AS score
FROM
VGB_ENTRY
WHERE
MATCH( COUNTRY, ENTRY ) AGAINST ('".$searchterms."') IN BOOLEAN MODE)
ORDER BY
score DESC";
} else {
echo ("U heeft niets ingevuld");
}
echo $searchresult;
?>
Heb je code even iets aangepast. Nu moet je de query natuurlijk nog wel uitvoeren met mysql_query().
Ik heb het script nu bijna af maar ik zit nog met dit probleem:
Can't find FULLTEXT index matching the column list, terwijl er in phpmyadmin gewoon staat dat ENTRY en COUNTRY gewoon FULLTEXT zijn. Dit is de sql:
$sql = "SELECT COUNTRY, ENTRY, ID,
MATCH(COUNTRY, ENTRY)
AGAINST ('$searchstring') AS score FROM VGB_ENTRY
WHERE MATCH(COUNTRY, ENTRY)
AGAINST ('$searchstring') ORDER BY score DESC";
Wat is hier fout aan?