Най-често срещани думи в текст

uphero

Registered
Как да изведа примерно 5-те най често срещани думи от текст където думите са разделени с запетаи и да изчисля процент.
примерен текст
иван,мария,георги,иван....
 
Според мен трябва да използваш цикъл за преминаване през думите, всяка дума се записва като променлива, например $duma4533, къедто 4533 е поредния номер на думата, и вътре в цикъла за всяка дума гледаш дали вече съществува и ако съществува, правиш променлива с името на думата и след товаа някакво число което казва за кой пореден път се среща думата, а накрая броиш по колко пъти е срещана всяка дума и... нещо такова си го представям аз.
 
В темата която дадох е описано как точно да се преброят със заявйа като думите са отделени точно със запетайки.
 
Hous каза:
В темата която дадох е описано как точно да се преброят със заявйа като думите са отделени точно със запетайки.
Ти хубаво си дал ама аз нищо не разбрах
 
Даденият стринг го разделяш на запетаи, както си направил.
След това го разделяш на интервал. Така се предполага число логически,че ще си разделил всички думи дори ако са от типа
голям хотел,хотел,голям

След това слагаш думата в масив.
$key[$word] = което да е равно на 1 , защото все пак се среща 1 път.
Ако няма такъв масив тогава го сетва на 1 , ако го има прибавя към неговата стоиност 1.
 
index каза:
Даденият стринг го разделяш на запетаи, както си направил.
След това го разделяш на интервал. Така се предполага число логически,че ще си разделил всички думи дори ако са от типа
голям хотел,хотел,голям

След това слагаш думата в масив.
$key[$word] = което да е равно на 1 , защото все пак се среща 1 път.
Ако няма такъв масив тогава го сетва на 1 , ако го има прибавя към неговата стоиност 1.
Благодаря ви , отказах се , рано ми е още за такива задачи.
По нататък ще пробвам пак
 
index каза:
Даденият стринг го разделяш на запетаи, както си направил.
След това го разделяш на интервал. Така се предполага число логически,че ще си разделил всички думи дори ако са от типа
голям хотел,хотел,голям

След това слагаш думата в масив.
$key[$word] = което да е равно на 1 , защото все пак се среща 1 път.
Ако няма такъв масив тогава го сетва на 1 , ако го има прибавя към неговата стоиност 1.
На мен пък ми стана интересно как точно ще става най-честата дума при положение,че по този метод (както аз го рабзирам) ще трябва да изкара всички записи да ги раздели по запетай и чак тогава с php да ги соритра и преброй най-честата...?


Иначе ако не ти бяха разделени със , това би свършило работа:
Код:
SELECT pole, COUNT(*) AS chestota
FROM table 
GROUP BY pole
ORDER BY chestota DESC
LIMIT 1
 
Може и аз да съм в грешка , но никъде до момента не видях ,че става дума за SQL.
Аз съм фен да си пиша аз функцииките и за това предложих по-горният алгоритъм, чак след това намерих решение в PHP.NET.
 
това е интересно.
но ако имаш голяма таблица и всеки път със зареждане на даден index да трябва да прави селет , count .. мисля че ще се отрази на response time .
Аз бих използвал този подход но във отделен файл и на crontab за да не засяга сайтът .
файлът ще прави селект какъвто е описано по горе , ще вади стойностите и ще ги записва в друга таблица - например с колони word, count .
така ще се прави един прост селект групиран по count ..

може и да греша но смятам че ще е по лесно и по ненатоварващо нали :)
ако не се лъжа повечето "водещи" сайтове правят точно това но записват резултатите не в таблица а във файл .
 

Back
Горе