sql >> Database >  >> RDS >> Mysql

Het implementeren van Twitter en Facebook-achtige hashtags

Een begin met MongoDB zou zijn om elk bericht te ontleden op hashtags die de gebruiker heeft gebruikt en deze in een subarray van het document te plaatsen. Voorbeeld statusupdate:

Dit bericht zou er als volgt uitzien in MongoDB:

{
    author: "Peter",
    date: ISODate("2014-04-29 12:28:34"),
    text: "Hello friends, I visited the #tradeshow in #washington and drank a delicious #coffee",
    hashtags: [
        "tradeshow",
        "washington",
        "coffee"
    ]
}

Wanneer u vervolgens een index maakt op db.collection.hashtags je kunt snel zoeken naar alle berichten die een van deze hashtags bevatten. U wilt waarschijnlijk de resultaten sorteren en beperken op datum, zodat de gebruiker de meest recente resultaten als eerste ziet. Als je er een samengestelde index van maakt die ook de datum bevat, kun je dat ook versnellen.

Hoe "trending" onderwerpen te implementeren is een vrij complexe vraag. Het is ook erg subjectief, afhankelijk van wat u als "trending" zou beschouwen. De exacte algoritmen die Twitter of Facebook gebruiken om te bepalen welke onderwerpen trending zijn of niet, zijn niet openbaar. Volgens verschillende social media analisten veranderen ze die ook regelmatig, dus we kunnen er vanuit gaan dat ze inmiddels behoorlijk complex zijn.

Dat betekent dat we je niet kunnen helpen om zelf een algoritme te bedenken. Maar als je al een algoritme in gedachten hebt om de "trendyness" van een hashtag te berekenen, kunnen we je misschien helpen om een ​​goede implementatie te vinden.




  1. stel een leeg wachtwoord in voor PostgreSQL-gebruiker

  2. De exacte waarde vinden van een door komma's gescheiden tekenreeks in PHP MySQL

  3. Hoe FROM_DAYS() werkt in MariaDB

  4. Waarom kost het doorlopen van een grote Django-queryset enorme hoeveelheden geheugen?