2011.07.21 | 

こんにちは。kaminalyです。
今日は、ツイッターの検索でハマった件についてメモメモ。

ハッシュタグ+日本語のワードで検索した結果を使いたいんだけど、
以外とうまくいかなかったのです。

ハマりポイントは、
「ツイッタの検索エンジンは日本語のインデックスに癖がある」
「ツイッタの検索窓と、apiでは挙動が違う」
の2点です。

まず、1つ目の癖についてですが、
「一」と「?」と「、」が含まれるワードはうまくヒットしませんでした。
漢数字や数字、記号、句読点は疑った方がよさそうです。
自分が使ったワードの範囲内でしか検証していないので、他にも色々ありそうです。

回避方法は、
漢数字の前後に半角スペースを入れる。
?の前後にも半角スペースを入れる。
句読点(、)はスペースに置き換える。※前後に半角スペース方式は使えなかった。

なら、「ワードを半角スペースでブツ切りにすればいいんじゃね?」と思いますが、
試しに一文字づつ全ブツ切りすると、「そんなにたくさん渡されても無理」とツイッタに言われます。(短いワードであれば通ると思います。)
まぁ、そうだよね。

2つ目ですが、
初めはapiをたたくphpを書き換えながら、try and error を繰り返していたんですが、
途中から面倒になって、どうせ仕様は同じだろうと、
twitterの検索窓にハッシュタグとワードを打ち込んで試しはじめたんです。
で、「一」で引っかかっている事を突き止めたんですが、
「?」と「、」はそのままでヒットしたんです。

「一」の前後に半角スペースを入れる処理を入れて、さて完成だ。
とサーバにアップしてプレビューしてみると、


あれ?
動かない?

           r'丁´ ̄ ̄ ̄ ̄`7¬‐,-、           /
        r'| |          |  |/  >、     /
        ! | |          |  |レ'´/|       |   待 て
        | | |   /\   |  |l  /⊂う    |
        | | |__∠∠ヽ_\ |  リ /  j     ヽ   あ わ て る な
        |´ ̄   O   ̄ ̄ ̄ ̄ ̄`!      〉
        l'"´ ̄ ̄ヾ'"´ ̄ ̄`ヾ::幵ー{       /   こ れ は 孔 明 の 罠 だ
        ⊥,,,,,_、    ___,,,,,ヾ| l::::::|      |
         lヾ´ f}`7   ヘ´fj ̄フ  | l::i'⌒i    |    そ ん な 事 は 無 理 だ
         l ,.ゝ‐イ    `‐=ニ、i | l´ ( }    ヽ
         l     {         U | l 、_ノ    ∠ヘ
        l   / ̄  ''ヽ、   | l ヽ_       \,_________
           !  ハ´ ̄ ̄ ̄`ト、  |亅〃/\
        ,人 f ´ ̄ ̄ ̄``ヾ  j ,!// {_っ )、
      // `ト、__iiiii______,レ'‐'//  _,/ /スァ-、
    ,.イl{ { 々 !/´しllllト、 ̄`ヽ、 // /´,.-、 /彑ゝ-{スァ-、
  ,.イ彑l l > ゞ く l 〃 l|ハ.lヽ、 ハVゝヽ二ノ/ゝ-{、彑ゝ-{、彑ァ-、
,.イ彑ゝ-'l l ( (,) レシ′   !l `ソァ'´    _ノ7{、彑ゝ-{、彑ゝ-{、彑{
ュゝ-{、彑l l  ` -イヘ      !l // /⌒ヽヾ/_ゝ-{、彑ゝ-{、彑ゝ-{、
 {、彑ゝ-'l l f⌒Yハ ',    !l/ / ヽ_う ノ /-{、彑ゝ-{、彑ゝ-{、彑ゝ
彑ゝ-{、彑l l{ に!小 ヽ   /!l /   ,/ /彑ゝ-{、彑ゝ-{、彑ゝ-{、

どうやら、ツイッターの検索窓とapiでは仕様が違うらしい。
search.twitter.comはapiと同じ挙動っぽい(未確認(汗))ので
そちらで調査して、「?」と「、」の罠を発見したとさ。

他の罠も発見してtwitter日本語検索クラスとか書くのも良いかなとかおもいつつ、
日本語強化されて、無意味になるのも時間の問題な気もするのでどうしたものか。。