Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Zoekmachine

None
5 antwoorden
  • Ik heb de volgende zoekmachine, alleen typ ik een woord in, in het form , dan krijg ik de hele tijd : "Er zijn geen zoekresultaten gevonden.". Weet iemand wat er fout is ?

    O ja misschien zit de fout ook wel in mijn tablestructuur.

    CREATE TABLE articles (
    id int(10) unsigned NOT NULL auto_increment,
    title varchar(200) default NULL,
    body text,
    PRIMARY KEY (id),
    FULLTEXT KEY title (title,body)
    ) TYPE=MyISAM;


    <?php

    $server = mysql_connect($host, $user, $pass);
    mysql_select_db($db, $server);
    $trefwoorden = preg_split('/ /', $trefwoord, 5, PREG_SPLIT_NO_EMPTY);

    $sql = "SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('$trefwoorden');";
    $res = mysql_query($sql);
    $num = mysql_num_rows($res);
    if (empty($num)){
    $num = "geen";
    }
    echo"Er zijn $num zoekresultaten gevonden.<br><br>
    ";
    while($row = mysql_fetch_object($res)){
    ?>
    <a href="<? echo $row->title ?>"><? echo $row->title ?></a><br><? echo $row->body ?><br>
    <a href="zoeken.php?trefwoord=<? echo $row->body ?>">
    LINK</a><br><br>
    <?
    }
    }
    ?>
  • Je SQL statement klopt niet, MATCH hoort niet in WHERE, maar is een onderdeel van SELECT. Daarnaast krijg je gewoon net zoveel waarden terug als dat de tabel rijen heeft, met per rij een getal hoeveel procent (?) overeenkomsten zijn gevonden. Kan ik wel allemaal gaan uitleggen, maar een duidelijk en niet al te moeilijk uitleg staat al hier. Succes ermee.

    - Basje.
  • Toch klopt de query: Kijk maar naar dit voorbeeld:

    SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
  • [quote:67d09ce746="Fredje41"]Toch klopt de query: Kijk maar naar dit voorbeeld:

    SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);[/quote:67d09ce746]Heb je wel de juiste tabellen aangemaakt en nog belangrijker: heb je de juiste MySQL versie?

    Beide staat op bovenstaande pagina.
  • Wellicht is het antwoord te vinden in onderstaande quote die ook weer direct van de pagina is geplukt. Het komt er op neer dat een woord dat vaak voorkomt niet wordt meegeteld, iets wat in kleine tabellen al gauw het geval is.[quote:88aa1cda48]Every correct word in the collection and in the query is weighted according to its significance in the query or collection. This way, a word that is present in many documents will have lower weight (and may even have a zero weight), because it has lower semantic value in this particular collection. Otherwise, if the word is rare, it will receive a higher weight. The weights of the words are then combined to compute the relevance of the row.

    Such a technique works best with large collections (in fact, it was carefully tuned this way). For very small tables, word distribution does not reflect adequately their semantic value, and this model may sometimes produce bizarre results.

    mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('MySQL');
    Empty set (0.00 sec)

    The search for the word MySQL produces no results in the above example, because that word is present in more than half the rows. As such, it is effectively treated as a stopword (that is, a word with zero semantic value). This is the most desirable behaviour – a natural language query should not return every second row from a 1GB table.

    A word that matches half of rows in a table is less likely to locate relevant documents. In fact, it will most likely find plenty of irrelevant documents. We all know this happens far too often when we are trying to find something on the Internet with a search engine. It is with this reasoning that such rows have been assigned a low semantic value in this particular dataset. [/quote:88aa1cda48]Lees het eens goed, het is best interessant. ;)

    - Basje.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.