検索キーワード解析は意外と大変
検索結果ページのURLに「検索キーワード」が含まれている、ということは前編で述べましたが、それを正しく解析するのは結構面倒なものです。実際にリファラー情報に含まれるURLを見てみましょう。
URLから「検索キーワード」を探すには
以下に示すのは、Googleの検索結果ページのURLです。
![](https://mz-cdn.shoeisha.jp/static/images/article/344/05_05.gif)
検索キーワードなどのパラメータは「クエリ文字列」と呼ばれ、URLの中で「?」の後に続いて表示されます。クエリ文字列は「データ名 = データ」という形式になっていて、複数のデータが「&」で区切られています。上記の検索結果の場合は、以下のようなデータが入っていることになります。
データ名 | 意味 | データ内容 |
---|---|---|
hl | 表示言語 | ja |
q | 検索キーワード | hatena |
btnG | 検索時に押されたボタン名 | Google+%E6%A4%9C%E7%B4%A2 |
lr | 検索対象言語 | 値なし |
これらのデータのうち、検索キーワードは「q」というデータ名で表されています。そのほかのデータも、検索エンジンにとっては必要な情報なのですが、キーワードを抽出するためには、それが「q」というデータ名でURLに含まれている、ということを知る必要があります。しかもこのデータ名は、統一されているわけではなく、検索エンジンによってまちまちです。
検索エンジン | データ名 |
---|---|
q | |
Yahoo! Japan | p |
goo | MT |
Excite | search |
このため、アクセス解析ツールでは、どのデータ名にキーワードが入っているかをあらかじめ知っておく必要があります。しかし、アクセス解析ツールによっては、実際の検索キーワード以外のデータをキーワードとして集計してしまうものもあるのです。
URLエンコードの問題
上記のGoogle検索の場合では、「btnG」のデータ内容は「Google+%E6%A4%9C%E7%B4%A2」という文字列になっています。これは「Google 検索」という文字列が「URLエンコード」という手法で変換されたものです。
URLには日本語を直接記述できません。そのため、日本語の部分はURL表記に使える英数字に変換(エンコード)して埋め込む必要があります。これが「URLエンコード」です。
![](https://mz-cdn.shoeisha.jp/static/images/article/344/05_06.gif)
実はこの「Google 検索」という文字列は、検索キーワードではありません。検索の際にクリックする「ボタンに書かれている文字列」なのです。しかし、こうしたデータを検索キーワードとしてカウントしてしまうわけです。
それ以外にも、ボタンに書かれた文字列として「検索」や「web」といったデータが含まれる場合があります。これらは同じ検索エンジンであれば、どんな検索キーワードで検索をしても含まれる文字列です。非常に数が多く、まるで「検索」というキーワードで検索を行った人がすごく多いような集計結果になってしまう場合があるのです。