Laravel: получите самые употребляемые слова с красноречивым - PullRequest
0 голосов
/ 04 октября 2018

У меня есть сообщение в таблице, и у него есть содержимое столбца.Столбец контента - это текст.Я хочу получить наиболее часто используемые слова в содержании сегодня с красноречивым

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Я думаю, что вы ищете именно это.

ПРИМЕЧАНИЕ : поскольку вы не предоставили никакой структуры таблицы, я не знаю, как фильтровать сегодняшние сообщения.Я надеюсь, что есть столбец с именем date.

Подсчитать все слова, которые использовались сегодня.

// array of all the content strings.
$contents = Post::where('date', date('Y-m-d'))->pluck('content');

// final result will be stored here as a key value pair.
// used count against each word.
$word_count = [];

foreach($contents as $content) {

    // array of each word in the content separated by 'space'.
    $words = explode(' ', $content);

    foreach($words as $word) {

        // if the word has already used +1 the count, else set the count as 1.
        $count = array_key_exists($word, $word_count) ? ($word_count[$word] + 1) : 1;

        // set new word count to the array.
        array_set($word_count, $word, $count);
    }
}

$most_used_word = array_search(max($word_count), $word_count);
0 голосов
/ 04 октября 2018

Попробуйте, предполагая, что имя таблицы = post и имя поля = content:

$mostUsed = Post::take(1)
    ->groupBy('content')
    ->orderBy('content', 'desc')
    ->count('content');

Получит первый самый распространенный content в таблице, и:

$mostUsed = Post::groupBy('content')
    ->orderBy('content', 'desc')
    ->count('content');

Получит регистры, упорядоченные от самых распространенных до самых редких.Кстати, это всего лишь адаптация от MySQL к Eloquent согласно этому примеру

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...