twitter の日本語検索(マルチバイト文字検索)がほとんど機能していないため、現在日本語の検索ができない状態になっています。いつからかっていうと、日本時間 2010 年 5 月 26 日の午前 7 時 30 分からです。たぶんこの時刻に twitter 側でなんらかの変更が入ったものと思われます。なんでそんな正確な時刻がわかるか、というと、「渋滞なう」にて今後のマッピング精度を上げるために一部ログをとらせていただいているからです。
いろいろなサイトさんでも話題になっています。
sakaik の日々雑感〜 (T) 編:ツイッターの検索が昨日から日本語にやさしくなくなってしまった話
MIRAI THE FUTURE : Twitter 検索 API で日本語検索結果が 5/26 から少ない件について Twitter の回答
F.Ko-Ji の「一秒後は未来」: Twitter で日本語検索がほとんど機能しない件と電車遅延なうの暫定対処
目次
回避策
そして今回の検索機能が使えなくなったために、いくつかの回避策が提案されています。
- 1 文字ずつスペースで区切る
- Any language にする
zh しか検索結果に現れない
「渋滞なう」においても 5 月 28 日に検索クエリの見直しを行い、上記対策をして少しは渋滞つぶやきが取得できるようになりました。しかし、以前に比べて圧倒的に検索されるつぶやき数が少ない。調べてみると、現在、検索できるつぶやきの言語がすべて「 zh 」(中国語)に分類されてるのものなのです。日本語「 ja 」と判定されたものはまったく検索されていないのです。
試しに firefox に JSON ファイルの中身が見られるアドオン JSONView をインストールして、下記のリンクを開いてみてください。
http://search.twitter.com/search.json?q= 渋 + 滞 &lang=all
iso_language_code が「 zh 」となっているものしか検索されていないことがわかるでしょう。 twitter では投稿した際に言語を自動的に判別するようですが、このときにたまたま中国語「 zh 」と誤判定されたものしか検索にひっかかってきていないという現状がわかると思う。
半角英数字は検索できる
ちなみに、マルチバイト文字以外の検索はうまくいっているようです。
http://search.twitter.com/search.json?q=ipad&lang=ja
Twitter ヘルプ:日本語の検索がうまく動いていないのはなぜ?
単語と単語の間にスペースがある英語と異なり、日本語はひと続きになっている文を単語に切り分ける必要があることにあります。
twitter 側では、日本語には文字区切りがないから、うまく検索できないとのことのよう。しかし本当だろうか? 試しに「 on 」という文字列で検索してみよう。
http://search.twitter.com/search.json?q=on&lang=ja
「 #k_on 」という文字列も検索にひっかかってくる。つまり前後に半角スペースがないとダメというのは、現状では関係ないと思われます。
結論
結論:言語が「 ja 」と判定された tweet のマルチバイト文字の検索が 2010 年 5 月 26 日午前 7 時 30 分よりできなくなっている。
もう少し検索される語を増やしてみることに挑戦
twitter では検索で返してくる文字コードが UTF-16 のようです。下記のリンクを開いてみて、ソースコードを表示してみましょう。渋滞なら「 \u6e0b\u6ede 」というようにコードされていることがわかります。
http://search.twitter.com/search.json?q= 渋 + 滞 &lang=all
試しに検索クエリに「 \u+UTF-16 のコード」を付け加えてみてください。ブラウザ上だとバックスラッシュがさらに URL エンコードされてしまうので結果に反映されませんが、 PHP などの言語から検索をしたときは、 zh 以外の en や fr などに判別された tweet も取得することができます。しかし、 ja だけ検索にひっかからないのはやっぱりおかしいと思うあさこんでした。