ТИцы/ПРы в реальной жизни

Делаю очередной проект.
Вот пришлось столкнуться с проблемой «раскрутки» полумертвого сайта в Гуглах/Яндексах.
Для сего реализовал несколько интересную, возможно концепцию подбора семантического ядра сайта, правда само исполнение можно назвать достаточно сырым.

Идея состояла в том, чтобы проанализировать частотность появления ключевых (более 3-х символов) слов в заголовках сайта, и вывести итоговую информацию в доступном (табличном) виде дял пользователей проекта.

Реализация оказалась достаточно простая (на сайте не так много материалов в районе 400-т статей). Оказалось возможным просто перебрать все из базы, склеить в одну длиннющую строку и далее разбить все это дело на слова, и далее просто подсчитать их частоту появления в этой «супер-строке». Вот собственно какой функцией был реализован такой механизм:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function get_keywords_q( $str )
{                    
  $str_=
  preg_replace(
    array("~([a-z\&\;\.\,\:\-\-\=\+\>\<\@\#\!\~\`\%\$\(\)\*\/\\\\])+~msi","~[ ]{1,}~","~[ ]+[^ ]?[ ]+~","~[\n\t\x0d\x0A]+~"),
    array(" "," "," "," "),
    strip_tags($str)
  );
 
 $arr_v = array_count_values( array_values( split( " ",$str_ ) ) ); //count keys density
 $arr_o = array();
 
 for ( $i=0; $i<count( $arrk=array_keys($arr_v)) ; $i++ )
 {
    $k = trim( $arrk[ $i ] );
    if ( (int)$k  || !$k || strlen( $k )<4  )      
      continue;
 
    $arr_o[ $arrk[$i] ] = $arr_v[ $arrk[ $i ] ];
 }
 arsort( $arr_o );
 
 return $arr_o;
}

А вот это, историческое кстати (годиков 5-ть назад писано) «чудо», иначе его не назовешь, было призвано просто разбить строку на ключевые, то есть — конечно преобразовать строку в массив со словами. То есть, можно сказать, оно было прообразом новой функции.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
/*-----------------------------------------------------------------
*  ==[ Date: 11.11.2010]== Programmer: Sofm@
*  ==[ Note: 
*------------------------------------------------------------------*/
function get_keywords( $str )
{
  $str_=
  preg_replace(
    array("~([\.\,\;\"\'\:\-\-\=\+\>\<\@\#\!\~\`\%\&\$\(\)\*\/\\\\])+~","~[ ]{1,}~","~[ ]+[^ ]?[ ]+~","~[\n\t\x0d\x0A]+~"),
    array(" "," "," "," "),
    strip_tags($str)
  );
 
  return implode(",",array_unique(split(" ",$str_)));
}
?>

А вот как оно используется. И иначе — никак. Поскольку просто не будет работать корректно. Я про первую функцию, конечно. Что делать,
без установленной «локали» — тяжко жить в одномерном пространстве кодировок. А двухмерный utf — не доставляет удовольствия, сложностью реализации простейших вещей.

1
2
3
  setlocale(LC_ALL, "ru_RU.CP1251");
  $keysp = get_keywords_q ( strtolower( $str_title ) );
  $keysp = array_slice ( $keysp, 0, 50 );

В итоге достаточно четко видно, какая информация вводиться в разделы сайта.
Правда, убил один маленький нюанс, несмотря на то, что все очевидно, несмотря на то, что заказчик сам, перед разработкой сайта сформулировал основной костяк семантического ядра, и дал список ключевых слов, при конечной реализации проекта — вылезли непонятные косяки.

А точнее — сам же исполнитель заказчика, не захотел придерживаться разработанной самим же, концепции. Загадка многогранной славянской души. Когда, увидели, что выходит, поняли, что первоначальный план — был «туфтой»?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *