NP_SearchedPhraseで検索フレーズ調査

なんかこのサイトで妙にアクセスが集中してるエントリがあるんです。
で、なんでアクセスが集中するのか、というのと面白そうなので検索フレーズを調査です。

install & fix

まずは作者様のサイトから最新版のアーカイブをダウンロードします。
で、アーカイブをダウンロードしたら262から290行目を修正します。

 
function rankList($this, $item, $cat, $rows, $disp_length) {
    if (is_numeric($item) && $item) {
        $res = mysql_query('SELECT query_phrase, query_count FROM ' . sql_table('plugin_searched_phrase_count') . " WHERE item_id=$item AND cat_id=0 ORDER BY query_count DESC LIMIT 0, $rows");
    } else { // We're in an index page
        if (is_numeric($cat) && $cat) { // in a category index. displays queries in the category
            $res = mysql_query('SELECT query_phrase, query_count FROM ' . sql_table('plugin_searched_phrase_count') . " WHERE item_id=0 AND cat_id=$cat ORDER BY query_count DESC LIMIT 0, $rows");
        } else { // in the main index. displays all queries
            $res = mysql_query('SELECT query_phrase, query_count FROM ' . sql_table('plugin_searched_phrase_total') . " ORDER BY query_count DESC LIMIT 0, $rows");
        }
    }
    if (mysql_num_rows($res)) {
        $site_search_url = $this->getOption('SearchURL');
 
        $domains = $this->getOption('SiteSearchDomains');
        $sitesearch = $this->getOption('SiteSearchSitesearch');
        $client = $this->getOption('SiteSearchClient');
        $forid = $this->getOption('SiteSearchForid');
        $ie = $this->getOption('SiteSearchIe');
        $oe = $this->getOption('SiteSearchOe');
        $hl = $this->getOption('SiteSearchHl');
        $cof = $this->getOption('SiteSearchCof');
 
        $site_search_options = ($domains ? "&domains=" . urlencode($domains) : "") .
            ($sitesearch ? "&sitesearch=" . urlencode($sitesearch) : "") .
            ($client ? "&client=$client" : "") .
            ($forid ? "&forid=$forid" : "") .
            ($ie ? "&ie=$ie" : "") .
            ($oe ? "&oe=$oe" : "") .
            ($hl ? "&hl=$hl" : "") .
            ($cof ? "&cof=" . urlencode($cof) : "");
 
        echo "<ol>\n";
        while($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
            $query = $disp_length?shorten($row["query_phrase"], $disp_length, "..."):$row["query_phrase"];
            echo '<li><a href="' . $site_search_url . "?q=" . urlencode($row["query_phrase"]) . $site_search_options . '">' . htmlspecialchars($query) . "</a> (" . number_format($row["query_count"]) . ")</li>\n";
            // echo '<li><a href="http://search.yahoo.co.jp/search?p=' . urlencode($row["query_phrase"] . " site:www.higuchi.com") . '">' . htmlspecialchars($query) . "</a> (" . number_format($row["query_count"]) . ")</li>\n";
        }
        echo "</ol>\n";
    }
}
 

から

 
function rankList($searchedPhrase, $item, $cat, $rows, $disp_length) {
    if (is_numeric($item) && $item) {
        $res = mysql_query('SELECT query_phrase, query_count FROM ' . sql_table('plugin_searched_phrase_count') . " WHERE item_id=$item AND cat_id=0 ORDER BY query_count DESC LIMIT 0, $rows");
    } else { // We're in an index page
        if (is_numeric($cat) && $cat) { // in a category index. displays queries in the category
            $res = mysql_query('SELECT query_phrase, query_count FROM ' . sql_table('plugin_searched_phrase_count') . " WHERE item_id=0 AND cat_id=$cat ORDER BY query_count DESC LIMIT 0, $rows");
        } else { // in the main index. displays all queries
            $res = mysql_query('SELECT query_phrase, query_count FROM ' . sql_table('plugin_searched_phrase_total') . " ORDER BY query_count DESC LIMIT 0, $rows");
        }
    }
    if (mysql_num_rows($res)) {
        $site_search_url = $searchedPhrase->getOption('SearchURL');
 
        $domains = $searchedPhrase->getOption('SiteSearchDomains');
        $sitesearch = $searchedPhrase->getOption('SiteSearchSitesearch');
        $client = $searchedPhrase->getOption('SiteSearchClient');
        $forid = $searchedPhrase->getOption('SiteSearchForid');
        $ie = $searchedPhrase->getOption('SiteSearchIe');
        $oe = $searchedPhrase->getOption('SiteSearchOe');
        $hl = $searchedPhrase->getOption('SiteSearchHl');
        $cof = $searchedPhrase->getOption('SiteSearchCof');
 
        $site_search_options = ($domains ? "&amp;domains=" . urlencode($domains) : "") .
            ($sitesearch ? "&amp;sitesearch=" . urlencode($sitesearch) : "") .
            ($client ? "&amp;client=$client" : "") .
            ($forid ? "&amp;forid=$forid" : "") .
            ($ie ? "&amp;ie=$ie" : "") .
            ($oe ? "&amp;oe=$oe" : "") .
            ($hl ? "&amp;hl=$hl" : "") .
            ($cof ? "&amp;cof=" . urlencode($cof) : "");
 
        echo "<ol>\n";
        while($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
            $query = $disp_length?shorten($row["query_phrase"], $disp_length, "..."):$row["query_phrase"];
            echo '<li><a href="' . $site_search_url . "?q=" . urlencode($row["query_phrase"]) . $site_search_options . '">' . htmlspecialchars($query) . "</a> (" . number_format($row["query_count"]) . ")</li>\n";
            // echo '<li><a href="http://search.yahoo.co.jp/search?p=' . urlencode($row["query_phrase"] . " site:www.higuchi.com") . '">' . htmlspecialchars($query) . "</a> (" . number_format($row["query_count"]) . ")</li>\n";
        }
        echo "</ol>\n";
    }
}
 

です。元々のソースは$thisっていう引数をとって使ってるんですが、これは予約語なので適当に置き換えてるだけです。
後はを/nucleus/plugin/ディレクトリに置いて、管理画面のプラグイン管理からインストールすれば完了です。

使い方

作者様のサイトを参照するのが一番だと思うんですが、まずは検索ワードをHighlightさせる為のJavaScriptを読み込みます。
headタグの中にこんな感じに追記です。

 
<%SearchedPhrase(highlight)%>
 
 

このサイトでは左のナビゲーションのところに使っています。

 
<%if(skintype,index)%>
            <div class="menu_box_top"></div>
            <div class="menu_box_body">
                <p>Search Words</p>
                <%SearchedPhrase(rank, all, 10)%>
            </div>
            <div class="menu_box_bottom"></div>
<%endif%>
<%if(skintype,item)%>
            <div class="menu_box_top"></div>
            <div class="menu_box_body">
                <p>Search Words</p>
                <%SearchedPhrase(rank, , 5)%>
            </div>
            <div class="menu_box_bottom"></div>
<%endif%>
 

スキンタイプで出力する内容を変えてるわけです。
index(メインの目次スキン)の時は、サイト全体の検索フレーズの一覧を10出力。
item(個別アイテムスキン)の時は、アイテムに該当する検索フレーズの一覧を5出力。
以上。

Category: Nucleus | Posted on: 2007/07/04 16:39 | Viewed: 1856

Comments

2007/07/06, 13:32 umi wrote:

調査ってこのことだったのね。。。
スタバでなに美味しいもの飲んできたの~?。。。

2007/07/06, 14:21 delfino wrote:

調査はまた別件なんですけど、スタバで飲んだのは、あずきなんちゃらフラペチーノ。
おいしゅうございました。

Add Comment

:

:
:

TrackBacks

2008/02/01 21:09, Web 酒 肴 Track Back:
NP_SearchedPhrase 検索フレーズ分析プラグイン:

とりあえずここに書いてるとおりやってみた。 [NP_SearchedPhraseで検索フレーズ調査](http://www.azul.systems-noel.jp/item_38.html) するとGoogle検索のキーワード表示がどうも文字化けしている。 そ...

TrackBack URL

http://www.azul.systems-noel.jp/trackback/item_38.html