Google Analytics

Google Analyticsでサイト内検索「検索キーワード」の文字化けを解決する方法

Google Analytics(グーグルアナリティクス)のサイト内検索レポートでは、Webサイトの利用者がサイト内検索を行った開始ページと終了ページ、サイト内検索に使用されたキーワード、サイト内検索によるコンバージョンなど、利用者の行動分析で貴重なデータを得ることができます。
サイト内検索のデータには、利用者の声が詰まっていますので、ぜひマーケティングに活用したいところです。

しかし実際には、検索キーワードが文字化けしてしまい、貴重なデータを十分に活用できずお困りの方が少なくないと思います。
Analyticsヘルプフォーラム(英語)では、検索キーワードの文字化けに関する投稿に対して、米国Analyticsチームから調査中とのコメントが寄せられており、残念ながら文字化けの解決には至っていません(2009年5月18日現在)。

そこで、何とか自力で文字化けを解決できないかと、文字化けした検索キーワードを眺めながら試行錯誤を重ねたところ、"裏技"ですが、文字化けの解決方法を発見しました(ただしクエリーパラメーター (*) の値が、文字コードUTF-8でエンコードされる場合のみ)。

なお今回ご紹介する検索キーワード文字化け解決方法は、Google社の公式発表ではなく、アズネットが検索キーワードの文字化け対策として必ず機能することを保証する訳でもありませんので、ご自身のリスクで判断してご活用ください。

* Google Analyticsのプロファイルで設定するサイト内検索の[クエリ パラメータ]

検索キーワードの文字化け解決のポイントは文字数?

前置きが長くなってしまいましたが、検索キーワードの文字数が少ない場合に文字化けが発生することに気付きました。どうやら検索キーワードの文字数が、文字化け解決のポイントのようです。
そこで、検索キーワードの文字数を増やせば文字化けは解消されるという仮説を立てて検証を重ねたところ、一定の文字数を超える検索キーワードであれば、文字化けが発生しないことが分かりました。

しかし、下記のように単純に「サイト内検索 」という文字を追加して文字数を増やしてしまうと、サイト内検索が正常に処理されなくなってしまいます(サイト内検索のキーワードに使用されるパラメーターが"s"のサイトで「分析」を検索する場合)。

http://www.example.com/?s=サイト内検索+分析

これでは本末転倒です。

検索キーワードの文字数を増やして文字化けを解決する方法

そこで、サイト内検索に全く影響を与えないクエリーパラメーターを用意して、検索キーワードをトラッキングします。必要な手順は、下記の通りです。

1. ダミーのパラメーターを追加して検索キーワードの文字数を増やす

サイト内検索に使用されるパラメーターとは異なるAnalyticsの検索キーワード追跡のみに使用するダミーのクエリーパラメーターを用意します(例:sq)。
次に、JavaScriptなどを利用して、サイト内検索で使用されたキーワード(値)を取得した後、文字(例:サイト内検索 )とキーワードの値をクエリーパラメーター"sq"に代入して、検索キーワードの文字数を増やします。

ダミーのクエリーパラメーター"sq"が付加されたURLは下記のようになります。

http://www.example.com/?s=分析&sq=サイト内検索+分析

ブラウザーのアドレスバー

ブラウザーのアドレスバー

:ダミーのクエリーパラメーターには、サイト内検索ばかりではなく、サーバーの処理とページ表示に影響のないパラメーター名を必ず設定してください。

2. 検索キーワードのクエリーパラメーターを変更する

後は、Analyticsで検索キーワードのクエリーパラメーターに"sq"を設定するだけです("s"の除外パラメーター設定もお忘れなく)

クエリーパラメーターに追加・代入する値の文字数は全角6文字以上で

肝心の文字化けしない検索キーワードの文字数ですが、検証では検索キーワードが全角6文字以上であれば文字化けしなかったため、クエリーパラメーターに追加・代入する値は全角6文字以上を推奨します。
eコマースサイトの場合、「サイト内検索 」ではなく「商品詳細検索 」とすると、直感的に分かり易そうです。

検索キーワードレポートで「日本語」出現

Google Analytics サイト内検索 検索キーワード
全ての検索キーワードは「サイト内検索 +検索キーワード」の形式で表示されますが、全て同じ形式ですので、分析に支障はないと思います。

※できればフィルターを使用して検索キーワードから「サイト内検索 」を取り除きたいところですが、検索キーワードのフィルター(フィールド)は用意されていないため削除できません。

JavaScriptを使用した文字化け対策処理ソース例

ご参考として、JavaScriptを使用した場合のソースをご紹介します。

<script type="text/javascript">
function setQuery(){
document.forms['sf'].elements['sq'].value = "サイト内検索 " + document.sf.s.value;
}
</script>

<form method="get" name="sf" action="/" onsubmit="setQuery();">
キーワード:<input type="text" name="s" class="s" value="">
<input type="hidden" name="sq" value="">
<input type="submit" class="button" value="検索">
</form>
キーワード:


解説

  1. フォーム送信時に、JavaScriptのonsubmitによりsetQuery()関数が呼び出されます。
  2. setQuery()関数が、キーワード(sの値)を取得し、変数(sq)に「サイト内検索 」と「sの値」を代入します。
  3. setQuery()関数の処理が終わると、フォームがサーバーに送信されます。

まとめ

Google Analyticsの検索キーワードの文字化け対策に必要な条件をまとめます。

  1. サイト内検索のキーワード用パラメーターとは異なる、Analyticsの検索キーワードトラッキングに使用するクエリーパラメーターをURLに付加する。
  2. 全角6文字以上(推奨)の値をクエリーパラメーターに追加・代入する。
  3. クエリーパラメーターは必ずUTF-8でエンコードする。※UTF-8以外の文字コードでエンコードされた検索キーワードは文字化けしてしまいます。

EUC-JP環境の検証結果
検証では、URLがEUC-JPでエンコードされる環境の検索キーワードは文字化けしてしまいました。
しかし、EUC-JPの文字をUTF-8に変換することで、検索キーワードの文字化けに対応できると思います(EUC-JPの処理を試された方はご連絡頂ければ幸いです)。

アクセス解析