データベースが「LIKE '%キーワード%'」できるような量じゃなくなってたから改善の必要があったわけだが、
-
キーワードインデックスを作成して2回目以降はその単語の検索を高速にする。
-
1回目は遅いままだが、複合キーワードの時にタイムリミットつけて、時間かかりすぎなら次の単語無視する。
ってな仕組み考えてみたりしたが、
キーワード検索なんて滅多にこないんだし、
APIに投げちゃえばいいじゃん!
って事に気づいたw
それならアマゾンとかに負荷かけるだけで、こっちのMySQLは問題なし♪
さらに、常に最新情報取れるし、未知の商品の取得機会にもなる。
ってわけで、
キーワード検索の時はMySQL見ずにAPI使うようにした。
アマゾン系の奴は、
元々自前DBで見つけられなかったときはAPI使うようにしてたから、
処理を飛ばすだけでOKだった。
JANのやつは、
条件によってYahoo!とAmazon分かれて複雑だったから、
JSONPでAPI使う仕様にした。
以前作った旧式Y!ショッピングのシステムも検索はJSONPにしようとして作りかけ放置状態だったんで、
それベースに作り直した。
YahooのJSONPレスポンスは、ちょい独特で使いにくいから以前は製作途中放棄になってたと思うんだが、
独特だけど仕様をよく見て理解すればそれほど難しくはない感じ。
普通は配列使うようなところがハッシュになってるんだよね。
これで、ショッピング系はほぼ完璧かな。
ちょい不安なのは、
-atomフィード生成するときにソート処理入れてるから遅いかもしれん。複合インデックスの作成はする気はない。
-MySQLの処理じゃなくて転送量の問題と思うが、サイトマップフィードが遅い。
ってあたり。
一応10日間ファイルキャッシュ置いとく感じにはしてあるから平気と思うが・・・