динамическое создание ключевых слов из mysql с использованием php

StackOverflow https://stackoverflow.com/questions/1044843

  •  20-08-2019
  •  | 
  •  

Вопрос

Моя структура:в каждой категории есть свои тексты.Эти тексты являются самостоятельными записями.Итак, таблица "категория" и таблица "тексты".В каждой категории около 90 текстов, каждый текст содержит около 300 символов.

Что я хочу сделать, так это создать мета-теги (ключевые слова) для категорий.Как> получить все релевантные "тексты", ранжировать все слова и выбрать 10 лучших слов.Эти топ-10 будут метатегом ключевого слова категории.

Сейчас же..хитрость > как извлечь эти 10 лучших слов.В настоящее время > у меня есть, что каждый текст (это полный текст) будет разделен на массив для каждого слова.Этот массив (в php) будет довольно длинным.После этого я беру частоту каждого слова и снова ранжирую его по частоте.Вуаля, топ-10 слов.

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

Ребята, у вас есть какие-нибудь советы?Любая помощь приветствуется.

Спасибо,

Морис

Это было полезно?

Решение

Хорошо, теперь, когда я выразил свое спокойствие в комментарии выше, я перейду к вашему алгоритму.

Есть несколько способов сделать это, я сосредоточусь на подходе, основанном на PHP, и позволю другим разработчикам использовать некоторые другие.

Я предполагаю, что вы уже запросили базу данных и сохранили все слова в виде списка, разделенного пробелами, в переменной $texts

// Sample data in $texts
$texts      = "orange orange apple apple apple banana";
$withCounts = array_count_values( explode( ' ', $texts ) );

asort( $withCounts );
$topTen = array_keys( array_reverse( array_slice( $withCounts, -10 ) ) );

print_r( $topTen );
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top