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

[PHP/MySQL] zoeken en ordenen op substring-occurance

IJsqueen
4 antwoorden
  • Hallo,

    Weet iemand ook hoe ik mijn search-engine-resultaten kan ordenen op het aantal keren dat de opgegeven zoekstring in een veld voorkomt?

    Simpel uitgedrukt:

    SELECT * FROM table WHERE column LIKE %substring% ORDER BY [string occurance] ASC


    alvast bedankt.
  • COUNT[string occurance]
  • Bedankt Sabine,

    maar wat is de positie ervan binnen de query?

    SELECT * FROM table WHERE column LIKE %substring% ORDER BY COUNT[string occurance] ASC?

    of:

    SELECT * FROM table COUNT(*) WHERE column LIKE %substring% ORDER BY column ASC?

    of begrijp ik het verkeerd?


    vr.gr.
  • Volgens mij gaat COUNT() niet helemaal werken, tenzij ik iets over het hoofd heb gezien in de manual.
    In principe zie ik 2 mogelijkheden. Ten eerste kan je gebruik maken van de full text search mogelijkheden van mysql (zie daarvoor de manual), daarmee is het mogelijk om een relevantie op te vragen en m.b.v. deze waarde moet het mogelijk zijn om te sorteren. Heb er overigens geen ervaring mee dus kan je niet verder helpen.
    Ten tweede zou je iets kunnen verzinnen binnen de "normale" sql queries. Een veelgebruikt truukje is om de zoekterm te verwijderen en de lengte van de string die je dan overhoudt te vergelijken met de oorspronkelijke string. In mysql ziet dat er dan ongeveer zo uit (niet getest):
    [code:1:daaad473ca]
    SELECT *
    FROM tabelletje
    ORDER BY
    (LENGTH(veld) - LENGTH(REPLACE(veld, 'zoekterm', ''))) DESC
    [/code:1:daaad473ca]

Beantwoord deze vraag

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