php сканирование контента по определенным ключевым словам - PullRequest
0 голосов
/ 29 сентября 2011

Как часть администратора CMS, я хотел бы просмотреть новые статьи на предмет конкретных ключевых фраз / тегов, которые хранятся в базе данных mysql.

Я достаточно опытен, чтобы иметь возможность вытащить список ключевых слов, пройтись по ним и сделать stripos, и substr_count, чтобы построить массив найденных ключевых слов. но средняя статья составляет около 700 слов и насчитывает 16 000 тегов и продолжает расти, поэтому в настоящее время цикл занимает около 0,5 с, что оказалось дольше, чем я ожидал, и будет увеличиваться только когда-либо.

Есть ли лучший способ сделать это? Даже если этот тип процедуры имеет специальное имя, это может помочь.

У меня PHP 5.3 на Fedora, он также на выделенных серверах, поэтому у меня нет проблем с общим хостом.

РЕДАКТИРОВАТЬ - Я такой разбойник, я ругался вслепую, что копирую и вставляю какой-то код! явно не

$found = array();
while($row = $pointer->fetch_assoc())
{
    if(stripos($haystack, $row["Name"]) )
    {
        $found[$row["Name"]] = substr_count( $haystack, $row["Name"]);
    }
}
arsort($found);

Мне кажется, я плохо объяснил, потому что я хочу выполнить процедуру для новых статей, которых в настоящее время нет в базе данных, поэтому я просто собирался использовать $ _POST в запросе ajax, а не сохранять статью в БД первый.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2011

Похоже, ваш код выглядит примерно так:

foreach($keywords as $keyword){
    if(strpos($keyword, $articleText) != -1){
        $foundKeywords[] = $keyword;
    }
}

Что вы можете учесть, так как массив ключевых слов настолько велик и будет продолжать расти, это переключить вашу обработку на цикл по словам в тексте вместо массива ключевых слов. Примерно так:

$textWords = explode(" ", $articleText);

foreach($textWords as $word){
    if( array_search($word, $keywords) && !array_search($word, $foundKeywords) ){
        $foundKeywords[] = $word;
    } 
}
0 голосов
/ 29 сентября 2011

http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html - это именно то, что вы ищете, если вы не хотите использовать скрипт поисковой системы, такой как sphinx / solr.

...