2014.03.25

CloudSearchが多言語対応してTokyoリージョンに!Suggesterを試してみる


本日、↓のアナウンスがございましたが、CloudSearchの大きなローンチがありました。
【AWS発表】Amazon CloudSearch 大幅アップデート – 1ヶ月100ドル以下でより良い検索が可能に!日本語にも対応!
 
日本語に対応したマネージドな検索エンジンが東京リージョンで使えるということで、早速試してみたいと思います。
お題は、先日書いた、SolrのSuggesterを試してみる | shinodogg.comのCloudSearch版ということで。
 
■ ドメインを作る
 
ManagementConsoleからDomainをCreateします。

 
ドメインの名前は取り敢えず、、、。
で、インスタンスタイプとレプリケーションの数が選べます。

 
ドメインのスキーマ定義はCSVファイルから。

 
CSVファイルの名前は山手線の名前で。

 
今回のローンチでAnalysis Schemeのところで”Japanese”が選べるようになりました!

 
IP制限の設定などして、ドメイン構築が終わるのを待ちます。

 
 
■ Suggesterの設定
 
続いて、新機能のSuggesterを追加します。
ユルく当てたり、Solr記法でソートの順番が変えられたりします。

 
Suggester用のインデクシングが必要な旨、表示されます。

 
ドメインのダッシュボード画面に戻ると”Run Indexing”が表示されます。

 
インデクシングを走らせてしばし待ちます。

 
 
■ データを投入します
 
肝心のデータを入れてませんでした…w
こちらも先ほどの山手線のCSVファイルをアップロードします。

 
29ドキュメントありますよー、と。

 
実際にはSDFというCloudSearch用の形式でデータは投入されるのですが、
CSVから変換されたSDFをダウンロードすることが出来ます。
中身みると↓こんな感じ。

 
29ドキュメントのaddがSuccessだったよ、と。

 
 
■ クエリを試してみる
 
Run a Test Search で Suggester を先ほど上記で設定した yamanote にします。

 
平仮名で入力しても漢字の駅名が表示されます。

 
“しん”で新橋が出てこないなぁって思ったら、

 
なるほど、そういう事なのね、、と。日本語奥深いです。。

 
こちら、いろいろと重宝しそうかなと思っていますヽ(´▽`)ノ
 
 
■ Developer Guide
 
↓ボリュームのあるドキュメントがあるので、今度も特徴のある機能などをピックアップして紹介したいと思います。
http://docs.aws.amazon.com/cloudsearch/latest/developerguide/what-is-cloudsearch.html
http://awsdocs.s3.amazonaws.com/cloudsearch/latest/cloudsearch-dg.pdf
 
 
■ 掃除
 
上記のスクリーンショットでエンドポイントとか晒してしまったので、ドメインを削除しておきます〜

 
 

Amazon Web Services クラウドデザインパターン実装ガイド
大澤 文孝
日経BP社
売り上げランキング: 4,972
Amazon Web Servicesクラウドデザインパターン設計ガイド
日経BP社 (2014-01-29)
売り上げランキング: 9,187

2014.03.21

シアトル行ってきたよブログ2014年3月編 その3


シアトル行ってきたよブログ2014年3月編 その1 | shinodogg.com
シアトル行ってきたよブログ2014年3月編 その2 | shinodogg.com
と、2回にわたって書いて参りましたが、ついでに帰りのも。
 
最終日の朝起きるとINVOICEが。

 
このホテルは小じんまりしてて、アットホーム感あって、ジムもいっつも誰も居ないし、
とても快適でした。オフィスからもとても近いので、またシアトル出張することがあれば滞在したいです。

 
最後の朝食はDragonFishで。

 
ナイスな雰囲気です。いっつも室内ちょっと寒いけど。

 
会社行って打ち合わせしてから、空港行く前にお土産買いに。

 
僕は普段コーヒーを飲まないのでアレなのですが。

 
Westlake駅でこんな広告みかけました。。
職業的にも自分がモロにアレな感じだけに、なんかちょっとヤな感じかなと。。

 
電車で空港いって、セキュリティチェック受ける前に、
Seattle’s Best Coffeeを初めて空港内でみかけましたw

 
チェッキンして。

 
外はとてもイイ天気でした。

 
空港内でサーモンバーガー食って、

 
ラウンジでビール飲みつつガッツリ仕事してから飛行機乗りました。

 
飛行機の中では映画を3つ観ました。どれもとても良かったです。
- Rush(http://eiga-movie.com/%E6%98%A0%E7%94%BB/rush/)
- Delivery Man(http://eiga-movie.com/%E6%98%A0%E7%94%BB/delivery-man/)
- Walter Mitty(http://eiga-movie.com/%E6%98%A0%E7%94%BB/the-secret-life-of-walter-mitty/)

あとは、Koboで大人買いした”マンガで読破”シリーズ読みながら
Tamar BraxtonのLove and Warとか聴いてました。

 
日本の夜10時半くらいに羽田に着くフライトで、1月の出張の時と同じ感じだったのですが、
進行方向右側の窓側の席に座ると、最後に東京湾の千葉側をグルっとして、
海ほたるの横目に着陸態勢に入っていくのが絶景でとてもナイスでした。
 
モノレール乗って、浜松町で、んま、日本帰ってきたら食うよね、と。

 

B05 地球の歩き方 シアトル&ポートランド 2013
地球の歩き方編集室 編
ダイヤモンド・ビッグ社
売り上げランキング: 41,028

シアトル行ってきたよブログ2014年3月編 その2


シアトル行ってきたよブログ2014年3月編 その1 | shinodogg.com では食べ物を中心に書きましたが、
その2 では週末いったボーイングの工場、美術館、博物館について書きたいと思います。

 
■ ボーイングの工場見学ツアー
 
シアトルと言えば、AmazonかMicrosoftかBoeingかって感じかと思うのですが、
そのボーイングの巨大工場を見学出来るツアーがある↓と。
Future of Flight – Aviation Center & Boeing Tour
 
が、ダウンタウンから行くのがちょっと面倒な北の方にあって、
一緒に出張にきた友人的にも時間が読めた方がイイなということで、
今回は日本語通訳付きのHISのバスツアーでいきました。
コレ、かなり良いお値段するのですが、ホテルまで送迎してくれたり、
何かと楽チンなので、高いと思うかどうかはその人次第ということでしょうか。
 
場所に付くと、テストフライト用の滑走路が直ぐそばにあって、
イロイロ展示してある建物に入ってツアー開始を待ちます。

 
ロールスロイスが作ってんだ!とか。

 
裏側もイカした感じで。

 
飛行機を輪切りにしたら、こんなんなりますよ的なヤツ。

 
Women in Aviation的な本のサイン会がやってて、

 
行列が出来てて、

 
非常に盛り上がってました。

 
肝心な工場の中は撮影禁止(というか、カメラやケータイの持ち込み禁止)なので
残念なのですが、スッゲーでかいし、さすが日本語ガイド付きってことでとてもナイスだったのですが、
いかんせん土曜日にいったってこともあって、工場の中はあんまり活発ではなく、
来れるのであれば平日くるのがオススメかなと思います。
バスツアーの最後は、”If it’s not Boeing, I’m not going!!”って
みんなで声を揃えて言うので、覚えておくとナイスかもしれませんw
上記メッセージが書いてあるTシャツも売ってました。
 
外には出来たてホヤホヤの飛行機が置いてあったり、ペイント前の飛行機がテスト飛行してました。

 
展望台からみた工場。スゲーでかいのぅ、と。
何千人というインターナショナルな人がこの敷地内で働いているということで、
病院とか食べるとことか(Bar系はない)たくさんあるそうですが、
この敷地内にはスタバはなく、全てタリーズとのことで、この辺で一番スタバが少ないエリア
とか言われてたりするんだそうです。

 
 
■ Seattle Art Museum(http://www.seattleartmuseum.org/)
 
MIRO展やってるらしいじゃんって事で行ってきました。

 
そこそこ混んでて、チケット買うのにちょっと並びました。
大学生くらいの関西弁バリバリの日本の学生の人たちが団体できてました。

 
2階と3階が展示スペースで、まずは2階から。

 
今年のSuper Bowlはデンバー対シアトルだったんだけど、
デンバー美術館とシアトル美術館で賭けをして、結果、シアトルのSEAHAWKSが優勝したってことで、
こいつが数ヶ月間無料でデンバー美術館から貸し出されてココに展示されてる的な。笑
ハッシュタグは #DENvsSEA で、と。
前回の出張時はシーホークスがスーパーボール出場を決めた時だったのですが、街中えらいこっちゃになってました。

 
自分の父親は佐賀県の有田町出身なのですが、こうやって海外の美術館で
有田焼が展示されてるのを見ると嬉しくなってきたりします。

 
シアトルは大体雨とか曇ってるので、こんなにキレーなマウントレーニアはなかなかみれないと
思いますが、こんなの書けたら絵かくの楽しいんだろーなー

 
最近展示がはじまったらしい。モダンな感じ。

 
こいつおっかなかったなーw

 
迫力のあるデカさ。

 
これも最近展示がはじまったらしい、アボリジニ的なアート。
ズデーンとデカくて迫力あります。

 
ユニークな感じの掛け軸っぽいの。

 
MIRO展の中は撮影禁止ということで。スッゲーよかったなぁ。
別に芸術に関する知識とか全然ないんだけど、段違いな感じするっす。

 
シアトルのラッパーのPVとかでも出てくる景色。

 
 
■ Museumm of Flight(http://www.museumofflight.org/)
 
ダウンタウンから#124のバス乗って航空博物館に行ってきました。
久しぶりにこの紐引っ張って降りますよ的な合図なヤツ。

 
30分くらいで到着。歩道橋渡って入り口へ。

 
ココは俄然写真撮影OKということで、ゴッツイカメラもってきてる人いっぱいいました。

 
一般人が普通に車型の飛行機乗る日ってくるのですかねぇ。

 
こういうレトロなエンジンみるとテンションあがります。

 
にしても、全然飽きない。ココ。

 
ユニークなの、ちょこちょこ見かけました。

 
この辺とか昔のアメリカ映画によく出てきそうな感じ。

 
紅の豚とかっぽい。

 
左のカールさん、series of crushesでcontract終わったとか…w

 
ってか、アラスカ航空の歴史興味深い。

 
年表的なのとか。

 
ブラブラしてると、こういう解説が聞けたり。

 
機体を下から見るのってはじめてでテンション上がりました。

 
死ぬまでに一回くらい運転してみてーなー。
スキル的には都内のバスドライバーの方が大変じゃね?とか思ってるんですが、
飛行機の操縦ってそんなに甘くないんですかね。。ダーウィンの悪夢とか見ると、
酔っぱらいのオッサンが普通にナイルパーチを飛行機で運んでたからな。。。

 
この施設はキッズフレンドリーな感じで、家族でくるのもナイスです。

 
あいにくの天気でしたが、駐車場もそこそこ入ってる感じで。

 
こういうの見ると自家用ヘリとか憧れるわぁ。

 
こういう計算式とか全然分からないですけど、
一応みて、ふーん的なリアクションをしてみたりするなど。

 
模型職人がいるんですねぇ。

 
無駄にメーターがいっぱいあるのとかソソるわ〜。
ライブハウスとかスタジオとかのミキサーとか見た時と同じような感じ。

 
ライト兄弟の会社の会計簿的なヤツがスキャンされて電子化されてました。

 
続いて戦争系の展示スペース。

 
ででん、と。

 
日本エリアに。

 
日本が中国に侵略した、と。

 
太平洋戦争に関する資料。
隣で、親子連れが、
子供: “ワオ, ジャパン!”
父親: “ジャパンは昔はワルかったんだよ…”
なんていう会話をしてて、なんだかなぁと思ったりしました。
が、アメリカではコレが現実なんだよなって。

 
こういうの、外国人に囲まれた中でみるの、なんかツレーわー。

 
日本人が原爆に抱く感情とは当然違うもの。
こういうのは、アメリカにきて展示物を見ることで、改めて感じるところがあります。

 
日本の本土決戦って展示されてたもの。軍隊の募集ポスターとか。

 
自分は全然戦争マニアとかでないので、アレなのですが、
飛行機はみてるだけでもかなり楽しめました。

 
と、同時に金かかってんだろーなーって感じも。
税金から捻出されてるとすると、なんだかなと。。

 
当時のコカコーラの。なんかレッドブル感ありますね。

 
詳細によく出来た模型とか。

 
日本の飛行機。マニアにはたまらないのでしょうかね。。自分にはよく分からず。。

 
1階が第二次世界大戦系で、2階が第一次世界大戦。2階に行くと、
2つの対戦の間に技術革新があったんだなーって感じさせられます。

 
が、飛行機的にはこういうレトロなの、ナイスですね。

 
コレとか乗ったら寒そう。。

 
シートめっちゃスースーすんじゃねーかな、と。。

 
次は歩道橋渡って宇宙の方。

 
宇宙から返ってくるときのヤツ。
行きの飛行機でGravityって映画みてきたので、おぉって感じ。

 
巨大な宇宙船が展示されてて。

 
こいつに乗り込むと、

 
オッサンが説明してくれました。

 
続いて外に出て、展示されてる実物の飛行機に乗り込みます。
大統領専用機のエアフォースワン。とても人気で乗り込むまでに列が出来てて10分くらい待ちました。

 
なにかとケネディ推しな感じ。

 
木目調なのカッコイイすね。

 
キッチンは狭いけど設備整ってる。

 
執務室。

 
レトロ感がナイス。

 
大統領専用機の運転って緊張感あったんだろうなーと。

 
コンコルドも展示されてたので乗ってきました。

 
なんつーか、いろいろ細かったっす。

 
カフェでメシ食うため、歩道橋渡って

 
これで15ドルくらいしたと思うのですが、あんまりオススメできないっすね。。

 
んじゃまたねーってことで、#124のバス乗ってダウンタウンへ。

 
バス停小さくて時刻表もないのですが、バスは30分に一本出てて、
ネットで見れる時刻表的には
↓の間の時間帯に待ってれば良さげでございます。
・Boeing Industrial Tukwila Int’l Blvd & S 112th St
・Boeing Plant 2 East Marginal Way S & 16th Ave S
 
 
 
■ MOHAI(Museum of History&Industory http://www.mohai.org/)
 
ダウンタウンからWestlake Aveをぶらーっと歩いていって、
ホールフーズ・マーケットとか通りすぎて、

 
湖まで出ると、

 
ぽゆい建物が出てきます。

 
Museum of History and Industoryです。

 
中入るとなかなかナイスな雰囲気。

 
4階の展望フロアからのユニオン湖。

 
1〜3階が展示スペースってことで、まずは3階。
いきなりクソディープな感じで。シアトルは同性愛な人が結構多くて、
CapitolHillにもGay Barとかあって、アレな感じで。

 
同性愛者の人たちの戦いの歴史とか。

 
シアトル出身のMACKLEMOREってラッパーの↓が話題になりましたが、
擁護しようとする姿勢ってシアトルのこういうとこからきてたりすんのかな、とか。

 
先住民族の人たちの展示スペースとか、この辺の自然に関する展示エリアもありました。

 
こういうの興味深い。シアトルナイスじゃん、と。

 
日本は中国に次いで、2番目の貿易パートナー。

 
勤務先マンセーなわけでもないですが、こういうの見るとテンション上がるw

 
影響力のある大企業なんだなぁと。改めて。

 
もちろんマイクロソフトの展示エリアも。

 
見たことあるのが沢山。

 
シアトルがどうやって開発されていったか的な資料とか。
こういうの見てると、シアトルファンになってく感じが不思議ですw

 
が、もちろんここにも過去の悲しい歴史が。日本人収容所の話とか。

 
“NO JAPS WANTED”とかね…。
浦和レッズのサポーターが似たような事やった件がニュースになってたけど、
自分がそういう立場になったらどんだけ辛いんだろうなって。
平和な時代の日本に生まれてコレてラッキーだなと改めて。

 
1939年の日本人の世界一周飛行な一枚。

 
Drawn to Seattleって絵が展示されてるところがスゲーよかった。
自分は小学生の頃とかから絵がとても下手くそなのですが、
定年後は絵画教室とか通って、絵とか書きたいなぁ。
写真と絵画を習得して世界まわるとかやってみてーーー

 
タトゥーアーティスト。

 
スヌーピーもホッケー的な。

 
Thank you!

 
中にある小さい映画館で8分間のシアトル紹介ムービーが上映されているのですが、
それのエンドロールでかかってた曲が気になって、あとからFacebookページに書き込んだら、
イイ感じに答えてもらえました :)

 
ビデオもホントその辺をRollin’ Seattleしてる感じがナイスですw

 

B05 地球の歩き方 シアトル&ポートランド 2013
地球の歩き方編集室 編
ダイヤモンド・ビッグ社
売り上げランキング: 41,028

シアトル行ってきたよブログ2014年3月編 その1


1月に出張でシアトルに行ってきたのですが、3月もシアトルに出張になりまして、
今回も仕事の合間にメシ食ったり、観光したり、してきたので、残しておこうと思います。
 
■ 羽田発DELTA便
 
空港の中は桜がキレーでした。
ココ以前きた時はクリスマス仕様的にライトアップされてたのですが、季節によって変わるんですねぇ。

 
結構シアトルで会う人がいっぱいなので、ガッツリお土産を買っていったのですが、
そしたら売り場の人がサンプルとしていくつかくれたので、空港のラウンジで美味しくいただきました。

 
外出てバス乗って〜ってことで。こういうのダルいなって思わず、
外出れてラッキー的な思えるんだけど、何歳になってもそんな風でいたいものです。

 
 
■ 朝飯: DragonFish(http://dragonfishcafe.com/)
 
泊まっていたホテルの1階にはDragonFishというお店があって、そこでBreakfastもやってるというので
行ってみたら、フッツーな内容で、お値段はイイ感じにガッツリなのね、と。

 
それ以降朝食は近所にスーパーがあって↓こんな感じで済ませたりもしました。

 
夜遅くまでやってて便利でした。

 
 
■ 昼飯: Westlake Centerのフードコート(http://www.westlakecenter.com/)
 
午前中の用事と午後の用事の間にWestlake Centerのフードコートにランチにいきました。
Mediterraneanなところが一番人気っぽかったのでちょっと並んで。スゲー腹いっぱい。

 
 
■ moore coffee(http://www.moorecoffeeshop.com/)
 
シアトルで働いてる人がYelpで調べたら評価が高いぜってことで。
が、僕は普段からあまりコーヒー飲まないのでチャイ(・ω<) 抹茶ラテ的なのもありました。
雰囲気はとてもよく、話がはずむ感じでしたが、17時でお店終了、と。
テキトーにオフィスで仕事切り上げて、残りはカフェでチョロっとやって17時で帰る、、とかやってみたい。
#んま、メシ食った後、夜中にキャッキャするんでしょうけどw

 
 
■ 晩飯: IlFornaio(http://www.ilfornaio.com/)

一緒に出張にきた友人とダウンタウンを徘徊していたら、良さそうなところがあったので。
後から調べたら、いろんなところにあるチェーン店のようですが、パンも美味かったし、
ワイン一本頼んで、ガツガツ腹いっぱいになるまで食っても、1人40ドルいかないくらい。
なぜかいきなり小さいリゾットをサービスだとかいってもらったんだけど、それが一番うまかったカモw

 
 
■ 晩飯: Sullivan’s Steakhouse(http://sullivanssteakhouse.com/)
 
せっかくアメリカきたからガッツリ肉食いたいね、と。
14ozのDry-Aged NY Strip Beef!!

 
でも、味って観点だと、Crab Cakeがスゲー美味かった。

 
サラダはあんま手かかってない感じするけどイイお値段でw

 
今回一番奮発した感じでワインとか飲まなかったけど、ステキなお値段しました。
 
 
■ 晩飯: Shanghai Garden(https://www.facebook.com/shanghaigarden)
 
中華街(International District)まではるばる歩いて。
Pikeからは結構遠かったけど、Beautiful Sunset的な。

 
こういうのもあったりして。規模的にはそんなに大きいわけではないですが。

 
中華街に宇和島屋って日本スーパーがあるんだけど、”しまねのうまいもん”てw
こちらは一緒に出張にいった @daiti0804 によるものです。

 
こちらの写真も @daiti0804 によるもの。麻婆豆腐は日本語の発音のまま注文できますw

 
中華街はセーフコフィールドとセンチュリーフィールドのそばなのですが、
この辺からのシアトルの夜景もなかなかナイスですね。

 
帰りもダウンタウンまで歩きました。
悪そうなヤツらがバス停のそばとかにウジャウジャしてたけど(女性の夜歩きはオススメできないですね)
面白そうな店とか。

 
 
■ 晩飯: Blueacre(http://blueacreseafood.com/)
 
いかにもシーフードなお店。

 
@daiti0804 もガッツリ収めてました。

 
Black Cod(黒ダラ)食いました。コレだったら中華屋行ったらもっと美味いもん食えるかも、と。。

 
 
■ クラブ: Q NightClub(http://qnightclub.com/)
 
セキュリティとか含めてしっかりした風なとこで。行った時間帯は誰もお客さんいなかったけど、
夜中盛り上がってきたらイイ感じなんじゃないかな、と。

 
逆に、前の日にクロコダイル(http://www.thecrocodile.com/)って、Patagoniaのちょっと奥くらいのとこにあるクラブ行ったら、
ローカルの悪そうなヤツらが大体集まってそうな感じで、Barエリアだけブラっとして速攻外でましたけどw
 
んま、シアトルにもイロイロあるってことで、次くる時はバンドのライブとかみたいなぁ。
 
 
■ 昼食: 8 oz Burger Bar(http://8ozburgerandco.com/)
 
Capitol Hillというイイ感じのお店とか上記のQ NightClubとかある
ナイスなエリアがあるのですが、そこで食ったバーガーがスッゲーうまかった。
コレは、またシアトル行くことあったら、是非食いたいレベル。
ポテトと飲み物とチップで20ドル弱くらい。

 
 
■ 晩飯: Saigon Vietnamese Restaurant II(http://www.yelp.com/biz/new-saigon-vietnamese-restaurant-ii-seattle)
 
前回のシアトル出張でも、アメリカ飯に疲れたらきたところ。
野菜たっぷりなフォーでガッツリ充電させていただきました。

 
 
■ 晩飯: DragonFish(http://dragonfishcafe.com/)
 
最後の夜はホテルの一回のお店にきてみました。

 
プルコギ風なんちゃらって書いてあったから、鍋っぽいので出てくるのかと思ったら、
お肉の味付けがそういう感じで。普通に美味しかったっすけど。

 
シメに食ったコレも美味かったなー

 
上記にビール1杯飲んで40ドルくらい。
 
 

食い物シリーズはこんな感じで、次回は観光編。
 
 

B05 地球の歩き方 シアトル&ポートランド 2013
地球の歩き方編集室 編
ダイヤモンド・ビッグ社
売り上げランキング: 36,266

2014.03.11

SolrのSuggesterを試してみる


以前、Solrの勉強会で大須賀さんがデモしていた↓がナイスだったので自分も試してみました。

アルファベットだったら、レーベンシュタイン距離で近いのでホゲホゲ、でOKだけど、
日本語の場合は、ひらがな/かたかな/漢字ってことで、単純に距離では図れませんがな、と。
 
さっそくhttps://github.com/mosuka/solr-suggester-demo-uiをcloneしてくると、
その名の通り、UIのとこだけですねん、と。当たり前ですが、コレでは何も動きません…。

$ ls
README.md	css		index.html	js

 
中身をみていくと、大きく2つに分かれています。
1. TermsComponentでAutoComplete & SpellCheckComponentで、Did you mean?
2. SuggesterでAutoComplete & Suggesterで、Did you mean?
 
jsディレクトリはjQueryが入ってるだけなのでイジる必要はなさそです。cssもそんな感じ。
ってことで、サーバーの構築をしていきます。
 
 
■ Solrのインストール
 
最新版のSolrを落としてきて解凍して、

$ curl -O http://mirrors.gigenet.com/apache/lucene/solr/4.7.0/solr-4.7.0.tgz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  144M  100  144M    0     0   576k      0  0:04:17  0:04:17 --:--:--  385k

 
exampleのディレクトリ行って、jar叩くだけです。

cd solr-4.7.0/example
java -jar start.jar

 
localhost:8983にいくと↓のようなリンクが出てきて、

 
↓叩くとソレっぽい画面が出てくるかな、と。

 
左側のメニューでCoreをcollection1に選ぶと今回のヤツになります。
 
 
■ Solrの設定ファイルの配置
 
http://www.rondhuit.com/download.htmlに、”[改訂新版] Apache Solr入門 ~オープンソース全文検索エンジン”というリンクがあって、
 
そちらをダウンロードしてくると solrbook-2.zip というファイルが保存されます。
sampledata/suggesterの中に以下の3つのファイルがありますが。
1. conf/schema.xml
2. conf/solrconfig.xml
3. samplesuggester.xml
 
1.と2.に関しては、そのまま上記でダウンロード&インストールしたSolrの↓に突っ込んで上げて、

solr-4.7.0/example/solr/collection1/conf/

 
3.は、(何かイケてないですが)Solrの管理画面から直接突っ込みました。

 
 
■ Githubから落としてきた静的コンテンツの配置
 
わざわざこのためにApacheとかも何だかなと思ったけど、warファイルの中にホゲホゲとかもアレだし、、
といってググってみたらQiitaでナイスなの見つけました↓
jetty で静的コンテンツを有効にして起動するまで(http://qiita.com/amay077/items/546b85cb74e9b2f1f928)
 
こちらを、そのまま拝借させていただいて↓のディレクトリ作ってファイルを置いてやります。

solr-4.7.0/example/htdocs/suggester

 
 
■ Suggesterの動作確認
 
Termコンポーネントだと”新”って漢字で入れないとアレですが、
Suggester使えば平仮名やカタカナでも出てきますよ、と。

 

 
 
■ その他
 
現在、出張でシアトルに来てるのですが、オフィスに犬連れてきてるヤツがいてナイスな感じだったりします(´▽`)

座席も広々してるしなー
 

[改訂新版] Apache Solr入門 ~オープンソース全文検索エンジン (Software Design plus)
大谷 純 阿部 慎一朗 大須賀 稔 北野 太郎 鈴木 教嗣 平賀 一昭
技術評論社
売り上げランキング: 11,651

2014.01.21

シアトル市内を観光してみました


出張でシアトルにきているのですが、前日入りってことで市内をブラっとしてみました。
 
■ シアトル・タコマ(Sea-Tac)国際空港からダウンタウン
 
入管手続き等を終えて、7時過ぎに外に出てきたのですが、すごい霧でした。
気温は寒かったですが、それほどでもなく、東京の早朝と変わらないかなといったところ。

 
シアトルには今後もきそうなので、ORCAカードというSUICA的なカードを購入しました。
カードを発券するのに5ドルのアレで、25ドルで20ドルチャージされる感じ。クレジットカードで。

 
車窓からはのどかな感じの景色でした。30〜40分くらいでダウンタウンに到着。

 
ホテルに最寄りの終点のウエストレイク駅。ホテルに歩いていくと、まだチェックインできませんがな、と。
Super BowlをかけたSeahawksと49ersの試合があるって事で混んでたのかもしれません。
メアドを伝えて、準備できたらメールちょーだいね、と。
 
↓はホテルの直ぐそばで、今回の出張で会社のセールスキックオフが行われる会場。

 
 
■ PUBLIC MARKET CENTERの中で朝食
 
ブラっと歩いてマーケットまで。

 
魅力的な食材。

 
なんかおっかないけどw

 
夕方のアメフトの試合に向けて、こんなとこでも。

 
朝食はSound View Cafe(http://www.soundviewcafe.com/)という眺めの良い店で、
朝からガッツリとクラムチャウダー食べました。美味かった!

 
ググったら↓お店のYoutube動画が出てきました。

 
 
■ Seattle City Pass
 
ニューヨークトロントに引き続き、シアトルでもCity Passを購入しました。
内容は↓のようになっているのですが、
- SPACE NEEDLE(2回上がれる)
- SEATTLE AQUARIUM
- ARGOSY CRUISES HARBOR TOUR
- PACIFIC SCIENCE CENTER
- EMP MUSEUM
- WOODLAND PARK ZOO OR THE MUSEUM OF FLIGHT
 
MUSEUM OF FLIGHTは空港のそばで結構遠いので、今日行くのは諦めて、
帰国日の出発の便が夕方なので、その時に行ければ行きたいなくらいで。
 
大体朝は10時からなのですが、水族館だけ9時半からだったので水族館に行くことしました。
 
 
■ シアトル水族館
 
水族館もアメフトのアレで”12″でした。

 
隣のピアには観覧車がありました。

 
水槽の掃除をしているダイバーに熱い視線を送る子ども。カワイイ。
ってか、親御さんが子どもに分かりやすい英語で話しかけてるのは、とても勉強になる。言い回しとか。

 
クラゲは大人気でした。

 
鳥とかもいたりして。

 
ラッコはクルクルまわってました。

 
あんまり大物とかはいなかったですが、イイ雰囲気でした。

 
タコみてたら、係の人が、自分と隣にいた子どもにタコのオスとメスの見分け方を説明してくれましたが、
自分は発音がアレでよく聞き取れずなんだかなと思ったのですが、その子は、おぉ、なるほど!的なリアクションしてました。。。
 
 
■ 海沿いを歩いてPacific Science Centerへ
 
水族館からブラっと歩いて。

 
良さ気なコンドとか。

 
日本郵船が寄贈したベンチとか。

 
SAMってなんだろうと思ったらSeattle Art Museumの事で、SAM自体はダウンタウンにあるのですが、
置き物とか壁に書かれた絵とか関係あるっぽい感じで。

 
この辺はオリンピック・スカルプチャー・パークと言うのですが、犬の散歩とかジョギングしてる人とかみかけました。

 
でっかいオブジェとか。

 
そんなこんなでPacific Science Center。

 
鉄道模型的なヤツとか。

 
どこいってもお子さんだらけ。ココはそういうとこなんだなと。。

 
ガラガラだったModernist Cuisineのところは人っ子ひとりいませんでしたw
確かにすげーシュールで自分には理解できませんでした…。

 
ココはIMAXシアター(CityPassとは別料金)が有名なのですが、時間が合わなくて見れなかったものの、
それ見ないと大人的には見るとこないかも的な。。
 
 
■ EMP Museum
 
この辺一体はSeattle Centerといって、上記のPacific Science CenterやSpace Needle等見どころが多いのですが、
Jimi HendrixやNirvanaの展示物があるEMP(Experience Music Project) Museumに向かいます。
 
ダウンタウンからフォグってて全く見えなかったSpace Needleをやっと見ることができました。

 
地図が親切でわかりやすい。

 
クロアチアフェスとか面白そうですね。

 
EMPに到着。

 
中に入って、デカイスクリーンの部屋を抜けていくと、ズドーン、と。

 
ジミヘンの展示物をチェックしに。

 
当時のギターとか。
写真だとわかりづらいですが、ちゃんと1弦のところに6弦がはってある。

 
エフェクターやワウペダル。

 
解説付き。

 
新聞の切り抜きとかたくさん

 
Hey Joe

他にも、こりゃ好きな人にはたまらんだろーなってのが盛り沢山。
 
続いてNirvana。
中学生の頃けっこうグランジにはハマったので、なんかその頃の感情とか思い出す感じ。
Seattle Soundとか書いてあって。あー、このいつもジメっぽい感じからこういうの出てくんだなーって。

 
亡くなったがそんな昔なわけじゃないから、展示物はかなり充実しています。

 
モヘアなカーディガンとか、モロっすよねぇ。

 
昔、このカバン、カート・コバーンが使ってたんだって。

 
Nirvana初期のデモテープ。

 
友達のTAMに宛てた手紙とか。ぶっとんでる。

 
んでもって、上の階に上がってみると、小さいスタジオみたいのがたくさんあって、
久しぶりにギターをかき鳴らしてみたり。

 
上の階から見たこいつもナイスでした。

 
ステージでJAMってるところを写真撮ってくれるサービスとかもあったのですが、いかんせん1人なので。。
 
他にもフライングVのデモ機とか。

 
ビンテージなレスポールかっけぇなぁ。

 
階段降りて、地下のホラーフロアみたいなとこにいってみる。

 
リングが解説されてたりとか。

 
日本のホラーもちょいちょいピックアップされてました。

 
ココはなかなか満足度高かった。また来てもいいかなぁ。
 
 
■ Space Needle
 
EMPの外でたらシアトルのランドマーク的なスペースニードルがデーンとしてたのと、
次に行く予定のクルーズにまだ時間があったので。

 
展望フロアから見た景色。
東京の六本木ヒルズやNYのエンパイアステートビルなんか比べちゃうとちょっとって感じですが。夜来たら違う印象なのかな。。
ちなみに日曜の昼間でしたが、展望フロアはガラガラでした。

 
CityPassでは2枚スペースニードルのチケットがついてるので、今度夜来るべってことで、展望フロアを2週くらい
ウロウロしてからモノレールでダウンタウンに戻ります。

 
ORCAカードが使えず現金で。。数分で付きます。

 
 
■ ARGOSY CRUISEのHARBOR TOUR
 
本日2回目のマーケットを抜けてブラっとウォーターフロントへ。

 
ピア55からグルっとその辺を一時間でまわるツア↓
http://www.argosycruises.com/sightseeing-cruises/seattle-waterfront-harbor-tours-cruise/
 
まだ時間があったのと昼飯食ってなかったので。Seahawksファンがキャッキャしてました。

 
アラスカ産の白身魚のフィッシュアンドチップス。

 
建物の中にも鳥がはいってきて、食い物が狙われそうになったりもしました。笑

 
船着場へ。

 
ピアの下ってなんかおっかないなと思ったり。

 
船はなかなかの客船。

 
お酒も飲めます。

 
出港。

 
どんより曇ってましたが、なかなか良い風景。

 
あんまりスペースニードルの存在感なかったり。
写真とかだと富士山みたいなのが奥に見えたりするけど、この天気じゃまず見えない。。

 
地元の素朴な感じの女性がガッツリ説明してくれます。

 
NATIONAL GEOGRAPHICターイムとか言ってシーライオンを紹介。
この辺のアシカはオスしかいないそうで。メスはカリフォルニアに住んでて、なんちゃらかんちゃらって言ってたけどよく分からず。。

 
工場萌えな人とかに良さそうなとこも通ったり。コンテナがガッツリ積んであるとこも間近に。

 
野球のマリナーズの本拠地のセーフコフィールドと、シーホークスのセンチュリーリンクフィールド。
アメフトの試合がちょうどはじまるとこだったので、アメリカの国歌が聞こえてきて、
最後に花火上がってました。(タイミング的に写真に収める事はできませんでしたが。。)

 
都会に戻ってきて終了です。

 
 
■ ベトナム料理屋で夕食
 
そんなこんなでガッツリとシアトルのダウンタウンを観光して、
ホテルに戻ってからアメフトを見てたら見事Seahawksの逆転勝利。
 
ホテルからも町中で騒いでる声が聞こえてきたので、外に出てみると、なんともまとまりのない感じ。笑
晩御飯を食べるところを探しながらブラブラしてみましたが、コレってところが見つからず、
安牌そうなSaigonというベトナム料理屋を発見。静かな店内で平穏に食べました。笑
味も美味しかったです。

 
その後、マーケットの方にいったら、車がクラクション鳴らしまくって楽しんでたり、
いろんな人とハイタッチしたりと大騒ぎでした。

 
 

B05 地球の歩き方 シアトル&ポートランド 2013
地球の歩き方編集室 編
ダイヤモンド・ビッグ社
売り上げランキング: 84,977

2014.01.08

Amazon Simple Email Service (SES)の送信件数をCloudWatchのカスタムメトリクスで監視する


■ Amazon SES
 
Amazon SESは安価に大量のメールを送信するのに便利なサービス(詳しくは⇒http://aws.amazon.com/jp/ses/pricing/)ですが、
- Daily sending quota: 1日に送信できるメールの件数
- Maximum send rate: 1秒間に送信できるメールの件数
といった制限がございます。

 
 
■ メール送信状況の監視
 
メールの送信状況は ses-get-stats.pl というスクリプトを使って取得出来るので、
コレをCloudWatchのカスタムメトリクスを使って監視してみたいと思います。
ses-get-stats.plの詳しい説明は↓こちらです。
http://docs.aws.amazon.com/ses/latest/DeveloperGuide/scripts-sending-limits.html
 
 
■ EC2インスタンスでメール送信状況を取得
 
Amazon Linuxを利用すると、ses-get-stats.pl は配置されていてパスが通っていますので直ぐ叩けます。

$ ssh -i xxx.pem ec2-user@ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2013.09-release-notes/

6 package(s) needed for security, out of 18 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ 
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ ses-get-stats.pl
Usage:
    ses-get-stats.pl [--help] [-e URL] [-k FILE] [--verbose] -s | -q

 
APIアクセス用のクレデンシャルなファイルをaws-credentialsという名前で作っておいて、
それを -k に渡して叩くと値が取得出来ます。

$ cat aws-credentials 
AWSAccessKeyId=Axxxxxxxx
AWSSecretKey=uxxxxxxxxxxxx

$ ses-get-stats.pl -k aws-credentials -q
SentLast24Hours Max24HourSend   MaxSendRate     
3               200             1               

 
SentLast24Hours を Max24HourSend で割って70%超えたら〜みたいな感じにしようかな、と。
 
まずは連続する複数のスペースをカンマにして扱いやすくします。

$ cat stats.txt | sed -e 's/\s\+/,/g'
SentLast24Hours,Max24HourSend,MaxSendRate,
3,200,1,

 
次にawsで2行目の1項目を2項目で割って100かけた値を出力してみます。

$ ses-get-stats.pl -k aws-credentials -q | sed -e 's/\s\+/,/g' | awk -F, '{if(NR==2) print $1/$2*100}'
1.5

 
こちらをcronで5分置きに起動してCloudWatchのカスタムメトリクスに連携して監視すれば良さそうです。

尚、SESはデフォルトではサンドボックスだけ使用可能でサンドボックスユーザーが送信できるのは、
1日200通&1秒間に1通のメールに制限されています。
 
 
■ mon-put-dataコマンドを使ってCloudWatchに連携
 
CloudWatchのカスタムメトリクスに値を連携するにはmon-put-dataコマンドを使用しますが、
まずは手動で叩いてみます。

$ /opt/aws/bin/mon-put-data --metric-name "SES Limit Ratio" --namespace "Custom Metrix" --value "1.5" --unit "Percent" --aws-credential-file aws-credentials 

 
そうすると、CloudWatchのMetricsのところにCustom Metricsのプルダウンが出てきて、

 
グラフが見れるようになります。

 
では、さっそくアラート用のNotificationを作ってみましょう。
今回は便宜上なので5%を超えたらアラートがくるようにします。

 
 
■ スクリプトをcronに設定
 
上記のスクリプトをシェルにしてcronに組み込みます。
# cronからの実行なので何かとフルパスにしたり環境変数を追加したり。

$ cat ses_watch.bash 
#!/bin/bash

export AWS_CLOUDWATCH_HOME=/opt/aws/apitools/mon
export JAVA_HOME=/usr/lib/jvm/jre

percent=`/opt/aws/bin/ses-get-stats.pl -k /home/ec2-user/aws-credentials -q | sed -e 's/\s\+/,/g' | awk -F, '{if(NR==2) print $1/$2*100}'`

/opt/aws/bin/mon-put-data --metric-name "SES Limit Ratio" --namespace "Custom Metrix" --value "$percent" --unit "Percent" --aws-credential-file /home/ec2-user/aws-credentials --region ap-northeast-1

exit 0

 
でもって上記のシェルをcrontabに登録します。
#/dev/nullに捨てるとか捨てないとか議論があるようですが、、、

$ crontab -l
*/5 * * * * /bin/bash /home/ec2-user/ses_watch.bash >> /home/ec2-user/ses_watch.log

 
 
■ SESのConsoleからメールを送信してアラートを受け取る
 
断続的に何通か送ってみます。

 
5パーセント超えました

 
アラーム飛びました。

 
SNSの設定で自分のメールに飛ばすようにしていたので”ALARM: “SES Limit Alert” in APAC – Tokyo”というメールが飛んできました。

 
 

ジェフ・ベゾス 果てなき野望―アマゾンを創った無敵の奇才経営者
ブラッド・ストーン
日経BP社
売り上げランキング: 75

2014.01.07

Amazon CloudSearchのクライアントプログラミング


■ Search Data Format (SDF)
 
Amazon CloudSearchでデータをインデクシングするのにSDFというフォーマット(JSONもしくはXML)で
データをアップロードする必要がありますが、2014年1月現在、以下の方法があります。
1. コマンドラインツールをインストールしてcs-import-documentsコマンドを使う
2. ManagementConsoleでブラウザからポチポチする
3. DocumentEndpointに直接curl等でPOSTする
 
SDFフォーマット的には↓に詳しく記載されていますが、
http://aws.amazon.com/articles/8871401284621700#_Ref198105621
 
以下のような情報が必要な感じになります。
- 操作種別(add/delete)
- 一意の識別子
- バージョン番号
- 言語コード(en)
- 実際のフィールドとデータ
 
 
■ SDKを使って開発しているのでその中でやりくりしたい
 
先日、Solrをイジっていて、SolrJでクライアントプログラミングしてみました(http://shinodogg.com/?p=5899)が、
ソレと同じようなノリで、Javaのオブジェクトを作って、そのままインデクシングしたいな、と。
 
 
■ まずはAmazon CloudSearchに検索サーバーを準備してSDKからアクセス
 
CloudSearchにDomainを定義します。
(後からtextフィールドもresultのチェック入れましたが、件数なくてもActiveになるまでそこそこ時間かかります)

 
JavaのSDKのCloudSearchなクラスを使ってアクセスしてみます。
 
- CloudSearchのクライアント。リージョンはVirginia(まだ日本にきてないので)

AmazonCloudSearchClient client = new AmazonCloudSearchClient(new PropertiesCredentials(SampleIndexer.class.getResourceAsStream("AwsCredentials.properties")));
client.setRegion(Region.getRegion(Regions.US_EAST_1));

 
- 検索ドメインを表示
↓この辺の情報が取れます。(複数ドメインがあれば複数)
・ドメインのID, 名前, 作成済み, 削除済み, 検索対象ドキュメント数
・ドキュメントサービス(インデクシング)のエンドポイント, サーチサービスのエンドポイント
・インスタンスのタイプや数、パーティション数なんかも

DescribeDomainsResult describeDomainsResult = client.describeDomains();
List domainStatusList = describeDomainsResult.getDomainStatusList();
for (DomainStatus status: domainStatusList) {
    System.out.println(status);
}

 
- ドメインのフィールドを表示

DescribeIndexFieldsRequest describeIndexFieldsRequest = new DescribeIndexFieldsRequest();
describeIndexFieldsRequest.withDomainName("sample");
DescribeIndexFieldsResult indexFieldsResult = client.describeIndexFields(describeIndexFieldsRequest);
List indexFieldStatusList = indexFieldsResult.getIndexFields();
for (IndexFieldStatus idxFieldStatus : indexFieldStatusList) {
    System.out.println(idxFieldStatus);
}

↓こんな感じでイロイロ取れます。いつそのフィールドのドメイン定義がUpdateされた〜とか。

{Options: {IndexFieldName: detail,IndexFieldType: text,TextOptions: {FacetEnabled: false,ResultEnabled: true,},SourceAttributes: []},Status: {CreationDate: Tue Jan 07 16:01:26 JST 2014,UpdateDate: Tue Jan 07 20:43:00 JST 2014,UpdateVersion: 22,State: Active,PendingDeletion: false}}
{Options: {IndexFieldName: head,IndexFieldType: text,TextOptions: {FacetEnabled: false,ResultEnabled: true,},SourceAttributes: []},Status: {CreationDate: Tue Jan 07 16:01:25 JST 2014,UpdateDate: Tue Jan 07 20:43:00 JST 2014,UpdateVersion: 22,State: Active,PendingDeletion: false}}
{Options: {IndexFieldName: id,IndexFieldType: uint,SourceAttributes: []},Status: {CreationDate: Tue Jan 07 16:01:23 JST 2014,UpdateDate: Tue Jan 07 16:31:16 JST 2014,UpdateVersion: 14,State: Active,PendingDeletion: false}}

 
んま、とりあえず、SDKを使ってCloudSearchと会話できる確認がとれましたよ、と。
 
 
■ JavaのオブジェクトからSDFを生成してPOSTする
 
SDFと言っても、普通のJSON(もしくはXML)なので、普通にバリューオブジェクトを作れば良さそうです。
 
ということで、まずはJavaなJSON用ライブラリ。
以前はよくJacksonというライブラリを使っていましたが、ググったらGoogleのがあるらしいので
(その名もGson。ストレートな名前がグッときますね。笑)、それを使ってみます。
↓pom.xmlに定義を追加してmavenでjarファイルをダウンロードしてきます。

<dependencies>
    <!--  Gson: Java to Json conversion -->
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.2.4</version>
      <scope>compile</scope>
    </dependency>
</dependencies>

 
- Valueオブジェクトを作ります。
・SDF

public class SDF {
	private String type; //操作種別(add/delete)
	private String id; //一意の識別子
	private int version; //バージョン番号
	private String lang; //言語コード(en)
	private Sample fields; //実際のフィールドとデータ
〜 setterとgetterは省略 〜

・ドメインで定義したヤツ

public class Sample {
	private int id;
	private String head;
	private String detail;
〜 setterとgetterは省略 〜

 
- ドカっと値を詰めてやります。

List<SDF> sdfList = new ArrayList<SDF>();

SDF sdf = new SDF();
sdf.setType("add");
sdf.setId("111111");
sdf.setVersion(1111);
sdf.setLang("en");
Sample sample = new Sample();
sample.setId(1111);
sample.setHead("sample head 11");
sample.setDetail("sample detail 12");
sdf.setFields(sample);
sdfList.add(sdf);

sdf = new SDF();
sdf.setType("add");
sdf.setId("111112");
sdf.setVersion(1111);
sdf.setLang("en");
sample = new Sample();
sample.setId(1112);
sample.setHead("head bungin");
sample.setDetail("detail junkie");
sdf.setFields(sample);
sdfList.add(sdf);

 
上記で2レコードを追加するJavaなオブジェクトが出来上がりました。
 
- オブジェクトをJSON文字列に。スッゲー簡単…。

Gson gson = new Gson();
System.out.println(gson.toJson(sdfList));

↓インデントするとこんな感じになります。

[
    {
        "fields": {
            "detail": "sample detail 12", 
            "head": "sample head 11", 
            "id": 1111
        }, 
        "id": "111111", 
        "lang": "en", 
        "type": "add", 
        "version": 1111
    }, 
    {
        "fields": {
            "detail": "detail junkie", 
            "head": "head bungin", 
            "id": 1112
        }, 
        "id": "111112", 
        "lang": "en", 
        "type": "add", 
        "version": 1111
    }
]

 
- よくあるHTTPクライアントなヤツ

HttpClient httpClient = new DefaultHttpClient();

// POSTでドキュメントエンドポイントに。
// URLの最後の方の"2011-02-01"はCloudSearchのバージョン名で今のところコレです。
HttpPost post = new HttpPost("http://doc-sample-xxx.us-east-1.cloudsearch.amazonaws.com/2011-02-01/documents/batch");

// JavaオブジェクトをJSONにしてContentTypeの設定&エンティティにセット
StringEntity entity = new StringEntity(gson.toJson(sdfList));  
entity.setContentType("application/json");
post.setEntity(entity);

// 実行して結果を取得
HttpResponse response = httpClient.execute(post);
System.out.println(response.getStatusLine());
String responseString = EntityUtils.toString(response.getEntity());
System.out.println(responseString);       

 
- 実行結果
ステータスコードと何件追加したよ的なヤツが返ってきます。

HTTP/1.1 200 OK
{"status": "success", "adds": 2, "deletes": 0}

 
 
■ ManagementConsoleからクエリ
 
↓正しくインデックスされていることが確認出来ました。

 
上記のコードも大量にデータを扱うとなるとイロイロとチューニングなポイントがありそうですが、
一般的なライブラリの組み合わせでやりくり出来そうです。
 
 
■ 次回は、、
 
SnapDishの清田さんのブログで形態素解析まわりをCloudSearchの外でやって、
日本語でもCloudSearchを活用されている例が紹介されていますが、
Yahoo!さんが日本語形態素解析APIを公開していたりするので、
そちらを使ってCloudSearchでの日本語の検索を試してみたいと思います。
 
 

[改訂新版] Apache Solr入門 ~オープンソース全文検索エンジン (Software Design plus)
大谷 純 阿部 慎一朗 大須賀 稔 北野 太郎 鈴木 教嗣 平賀 一昭
技術評論社
売り上げランキング: 5,985

2014.01.02

三島にいってきました


■ 電車でいきました
 
お正月ということで三島に電車でいってきました。
地元の海老名から小田急線で小田原に出て、そこから東海道線に乗り換えて三島へ。
小田原駅は箱根駅伝を観戦する人たちや、どこかに初詣に行く人たちでごった返していました。
 
 
■ 三島駅
 
ホームの階段降りると、微笑ましい看板。

 
駅前の観光案内所的なところで観光マップ(その名も”みしまっぷ”)をゲット。

 
 
■ 三嶋大社へ
 
水路沿いを歩きながら。

 
水はとても澄んでてキレイでした。

 
駅から10分かからないくらいで到着。

 
 
■ 三嶋大社参拝
 
もの凄い人でごった返していました。

 
ちょっと逸れると空いてたりもしました。昔の神主の矢田部盛治像。

 
キチンと少しずつ、スタッフの人が誘導してくれるようになっていて、参拝はスムーズでした。

 
お守りやおみくじはごった返してたので飛ばして、外出てみると屋台も人いっぱい。

 
500円払うと入れる宝物館はガラガラでゆっくり見れました。
戦に敗れた今川家が北条家を頼り伊豆方面に逃げ込む際に、三嶋大社を北条の物とするなんていう一筆とか、
内部の争い的な展示物などをみると、ココで無病息災を神様にお祈りすることに少し疑問を感じたりもしましたが、
展示されている刀や漆器などは素人目でもどれも素晴らしいものでした。
安政の頃にあった東海地震の際に復旧のための募金をした人の名前が連ねてある展示物とかも。

 
宝物館から外に出ると鹿がたくさんいて和みました。

 
 
■ 三島と言えば鰻
 
商工会議所でもらった、うなぎグルメガイドで美味しそうだった桜屋に行くと、2時間待ち、、と。
少し繁華街から離れたところにある、うなよしに行ってみました。
 
結構と人が並んでましたが、桜屋よりも少ない感じで。2時から並び始めて、鰻を食べ始めたのは3時前でした。

 
ビール飲みつつ、

 
上うなドーン!!今まで生きてた中で一番美味しい鰻丼でした。ご馳走様でした。

 
ちなみに、そこそこイイ値段ですが、お値段以上というかプライスレスというか。
三島は富士山麓から流れてくる水が豊富で、そこに鰻を数日間泳がせることで、
生臭さとか余計な脂肪を取り除くことができて美味しいのがそうです。
もちろんその店に受継がれた焼き方とか秘伝のタレとかもあるのでしょう(´▽`)

 
 
■ 水路沿いを散策
 
“街中がせせらぎ”というのが至るところに書かれているのですが、
それをイイ感じに体感出来ました。三島いいとこだな、と。

 
尾瀬っぽい感じ(尾瀬いったことないですけど。笑)

 
奥の方までいくと秘境っぽかったりして。

 
東京のコンクリートジャングルで暮らしてると、たまにはこういうとこ来たくなります。

 
んま、こういう所もあるのですね、と。

 
“呑んべい ざこ”とシュールなオブジェ。

 
いろんなところで鯉みかけました。

 
楽寿園はお正月だから休園日ということで、今回唯一残念だったところ。良さ気っぽかったら入りたかったなぁ。

 
小さめな神社とかもチョイチョイみかけました。

 
 

海老名からだと小田原と熱海で乗り換えてって感じだったのですが、
品川とか近い人は往復新幹線で行くと、お気軽な日帰り旅として良いところだなと思いました(´▽`)
 

るるぶ静岡 富士山麓 清水 浜名湖 伊豆'14 (国内シリーズ)
ジェイティビィパブリッシング (2013-10-11)
売り上げランキング: 56,302

2013.12.27

Solrの手前にApache(mod_proxy)置いたらハマった件


■ なぜApache?
 
ManifoldCFの環境をEC2上に作っていて、クロールしたデータをローカルのSolrに入れようとした場合に、
外から見たそれぞれの管理画面は、
- ManifoldCFが8345ポート
- Solrが8393ポート
ってことで、それなら手前にApache置いてURL的にもキレイな感じにしたいよね、と。
 
 
■ なぜmod_proxy?
 
ManifoldCFもSolrもデフォルトのexampleなアレだとJettyを使ってるわけなのですが、
ちょっとググっていくと、http://wiki.eclipse.org/Jetty/Tutorial/Apacheってとこで、mod_proxy推しですね、と。

The mod_proxy modules are superior in features,
maintained with apache httpd, support HTTP and AJP and has a rich load balancer.
We highly recommend using mod_proxy when using Jetty with apache.

 
んま、といいつつも、AJPとかバランサーとかの設定は今回は端折って、チャチャっとやります。
 
 
■ EC2(Ubuntu)にApacheとmod_proxyをインストール
 
Apacheは sudo apt-get install apache2 で入れておいたとして、
 
- ロードするモジュールが書いてある設定ファイルをシンボリックリンクで。

$ cd /etc/apache2/mods-enabled/
$ sudo ln -s ../mods-available/proxy.load proxy.load
$ sudo ln -s ../mods-available/proxy_http.load proxy_http.load

 
- proxy.confで設定できるように。

$ sudo a2enmod proxy
Enabling config file proxy.conf.
To activate the new configuration, you need to run:
  service apache2 restart

 
- 設定入れてAapche再起動してモジュールがロードされてることを確認

$ sudo vim /etc/apache2/mods-enabled/proxy.conf
<IfModule mod_proxy.c>
  ProxyRequests Off
  <Proxy *>
    AddDefaultCharset off
    Order deny,allow
    Allow from all
  </Proxy>

  # searchだったらSolr
  ProxyPass /search/ http://localhost:8983/
  ProxyPassReverse /search/ http://localhost:8983/

  # crawlだったらManifoldCF
  ProxyPass /crawl/ http://localhost:8345/
  ProxyPassReverse /crawl/ http://localhost:8345/
</IfModule>

$ sudo service apache2 restart 
 * Restarting web server apache2                                                                                                             [ OK ] 

$ apachectl -M | grep proxy
 proxy_module (shared)
 proxy_http_module (shared)

 
 
■ Solrのインストール
 
Java入ってなかったので入れて、

$ java -version
The program 'java' can be found in the following packages:
 * default-jre
 * gcj-4.6-jre-headless
 * gcj-4.7-jre-headless
 * openjdk-7-jre-headless
 * openjdk-6-jre-headless
Try: sudo apt-get install <selected package>

$ sudo apt-get update
$ sudo apt-get install openjdk-7-jre-headless

$ java -version
java version "1.7.0_25"
OpenJDK Runtime Environment (IcedTea 2.3.12) (7u25-2.3.12-4ubuntu3)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

 
Solrをダウンロードしてきて展開してstart.jar叩くだけの簡単なお仕事。

$ wget http://download.nextag.com/apache/lucene/solr/4.6.0/solr-4.6.0.tgz
$ tar xvf solr-4.6.0.tgz
$ cd solr-4.6.0/example/
$ java -jar start.jar 

 
 
■ 画面から見てみるとSolrが何か変(EC2インスタンスをstop/startしたので画像のURL叩いてもアレなので悪しからず)
 
なんかクルクル回ったまんま何も出てこないし、、

明らかにCSS読み込めてないし、、

apacheのログみたら↓とか言ってるし、、

File does not exist: /var/www/solr

 
 
■ 解決策
 
ググってたら↓このAnswerが神でした。。
http://serverfault.com/questions/547010/solr-reverse-proxy-apache2
 
掻い摘んで言うと、
- 絶対パスになってるから静的コンテンツ系が読み込めてない
- proxy.confに 『ProxyPass /solr http://localhost:8983/solr』 を追加しなはれ
 
上記の設定入れたらイイ感じになりました!(んま、なんかちょっとアレですけど。。)
 
 


 

ということで、これからManifoldCFでクロールしてSolrにデータを投入していこうと思います。
もちろんManifoldCFの参考図書は↓こちらです。

[改訂新版] Apache Solr入門 ~オープンソース全文検索エンジン (Software Design plus)
大谷 純 阿部 慎一朗 大須賀 稔 北野 太郎 鈴木 教嗣 平賀 一昭
技術評論社
売り上げランキング: 6,873

Next »