En början med MongoDB skulle vara att analysera varje meddelande för hashtags som användaren använde och lägga in dessa i en undergrupp av dokumentet. Exempel på statusuppdatering:
Detta meddelande skulle se ut så här i 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"
]
}
När du sedan skapar ett index på db.collection.hashtags
du kan snabbt söka efter alla meddelanden som innehåller en av dessa hashtaggar. Du vill troligen beställa och begränsa resultaten efter datum så att användaren ser de senaste resultaten först. När du gör det till ett sammansatt index som även inkluderar datumet kan du också snabba upp det.
Hur man implementerar "trending" ämnen är en ganska komplex fråga. Det är också väldigt subjektivt beroende på vad du skulle anse som "trending". De exakta algoritmer Twitter eller Facebook använder för att avgöra vilka ämnen som är trendiga eller inte är inte offentliga. Enligt olika sociala media-analytiker byter de dem också ofta, så vi kan anta att de är ganska komplexa vid det här laget.
Det betyder att vi inte kan hjälpa dig att komma på en algoritm på egen hand. Men när du redan har en algoritm i åtanke för att beräkna "trendyiteten" för en hashtag, kan vi hjälpa dig att hitta en bra implementering.