2011-09-29 11 views
0

CMS管理者の一員として、mysql dbに格納されている特定のキーフレーズ/タグの新しい記事をスキャンしたいと思います。特定のキーワードのPHPスキャンコンテンツ

私は、キーワードのリストを取り出し、それらをループしてストライプを行い、substr_countを使用して見つかったキーワードの配列を構築するのに十分な能力を持っています。平均的な記事は約700語であり、16,000のタグがあり、現在成長しているので、ループは約0.5秒かかり、これは私が望んでいたよりも長く、今までより長くなります。

これを行うには良い方法がありますか?この種の手続きに特別な名前があっても、それは助けになるかもしれません。

私はFedoraでPHP 5.3を使用しています。専用サーバーにもありますので、共有ホストの問題はありません。

EDIT - 私はそのようなスキャターブレインです、私は盲目的に私はいくつかのコードをコピーして貼り付けました!明確ではない

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

は、私は、彼らが現在データベースにない新しい記事に手続きをしたいので、私は、ひどく自分自身を説明したと思うので、私はちょうどではなく、AJAXリクエストで$ _POSTを使用するつもりでした最初に記事をDBに保存します。

+0

全文検索および/またはスフィンクス検索 – Jauzsika

+0

申し訳ありませんでした!以下のコメントを参照してください:) – CodeMonkey

答えて

0

http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.htmlは、sphinx/solrなどの検索エンジンスクリプトを使用したくない場合に探しているものです。

+0

お詫び私は十分にはっきりしていませんでした。編集を参照してください。記事はちょうどメモリ内にありますので、キーワードを取得するにはDBクエリを1つだけ実行します。キーワードごとに1つのクエリの検索は、私はそれらをバッチそれはメモリ内で比較するよりも速くなるチャンスですか? – CodeMonkey

+0

私はスフィンクスに反対しているわけではありません。それについてはあまりよく分かりませんが、記事を保存して、スフィンクスを再インデックスして複数のクエリを送信するケースがありますか? – CodeMonkey

+0

@コードモンキー:そのためには、あなたのwikiに相談することをお勧めします:http://sphinxsearch.com/wiki/doku.php、それが役に立ったと思っています;) – Kenny

0

あなたのコードは次のようなものに見えるようですね:

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

をキーワード配列が非常に大きいと成長していきますので、あなたが考えることができる何かがテキスト内の単語をループし、あなたの処理を切り替えることですkeywords配列の代わりに。このようなもの:

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

foreach($textWords as $word){ 
    if(array_search($word, $keywords) && !array_search($word, $foundKeywords)){ 
     $foundKeywords[] = $word; 
    } 
} 
+1

多かれ少なかれ - しかし単語/非単語境界スペースではなく分割するために(PCREを参照)、それをデータベース層にプッシュして、検索エンジンを実装してみましょう。 – symcbean

+0

strposは、発生していない-1がない場合はbooleanを返します。 – Fredrik

+0

悲しいことに、その方法は役に立たず、テストしたところ、実際にはほぼ2倍の時間がかかっていました。元の投稿では説明できませんでしたが、タグの一部はキーフレーズです。言葉で休憩ミスが多い – CodeMonkey

関連する問題