読者です 読者をやめる 読者になる 読者になる

第10回 Solr 勉強会にいってきた

tech

3月26日に開催された、第10回 Solr 勉強会にいってきた。だいぶ遅くなったけどもろもろメモ。

辞書型コーパスからの類義語知識の自動獲得

  • 株式会社ロンウイット 関口さん
  • 資料
  • Solr で同義語検索は SynonymFilter で簡単にできるけど、辞書を用意するのが大変。
  • Wikipedia から同義語辞書を作ってみましょう的なお話し。
  • 誤抽出は検索時に上位にさせない工夫をする余地があるので、実用になりそう。
  • 今回の抽出対象は原型語とその省略語ということで、「Mr.Children」と「ミスチル」のようなものは対象外。
    • そのような類義語辞書が必要な場合は別の方法(手動?)が必要。
  • オライリーから Lucene / Solr 本(もちろん英語)が出るらしい。

GREE における全文検索の歴史

  • グリー株式会社 尾形さん (@nobu666)
  • 資料
  • GREE の検索あんまり使われてない。
    • 会場も使ったことある人の挙手なかった…。
    • 担当も1人とかなんとか。
  • SennaTritonnLucene → Solr (2012年初頭から)
    • Tritonn やめた理由はあるある感。
    • Lucene 大変そう。
  • Lucene → Solr は IF の互換保ったまま移行。
    • クエリ変換、結果の XML のカスタマイズ、インデキシングの IF 等。
  • ユーザ、コミュニティなど用途別に7スキーマ、サーバ40台少々。
    • 贅沢構成だなーと思ったら、サーバくれといえばもらえるらしい…。
    • うらやましい…。
  • Range Query で slave が重くなるらしい。
    • スパム回避のため、多くのクエリにユーザ登録日の Range Query が入っているとのこと。
  • インデクサはマルチスレッド。
  • 無停止でスキーマ変更するの大変。
    • よく聞く話…。
  • 辞書のメンテが大変なので(多言語対応もあるため特に)トークナイザは bi-gram 。
  • 大きいスキーマでインデクサ 80GB ほど。

企業内の大規模ファイルサーバ検索事例

  • ソフトバンクBB株式会社 野口さん
  • 社内ファイルサーバの検索。
  • Apache ManifoldCF と連携。
  • 対象のファイル(だったかな?) 70TB 。
  • 「僕らはサーバくれと言ってももらえないので。」
    • 詰め込んだ感じの構成。
  • 検索スコア BoostQuery, BoostFunction で調整。
  • 外部データでブースト。 External file field で可能?

SolrCloud の導入事例

  • 株式会社サイバーエージェント 弘瀬さん
  • 資料
  • Simplog 検索(スマホ用ブログサービス)への導入事例。
    • Solr 4.1
    • 295万 Docs
    • インデックス 1.5GB
    • 反映まで 5min 程度
    • 3qps
  • さまざまな構成によるベンチマーク
  • 人柱的なニュアンスでこの規模のサービスに導入したとのこと。
  • メリットもあるけど、パフォーマンスが落ちる部分もある。
    • なんだかんだで素の Solr が速い。
  • 自分のお仕事で使うのはまだ早いかなーといった印象。

ゆるゆりライブイベント3「七森中♪ふぇすてぃばる」に参加してきた

昨日開催された、ゆるゆりのライブイベント、「七森中♪ふぇすてぃばる」に参加してきました。

前回のライブイベント、「七森中♪うたがっせん」は昼の部のみの参加でしたが、今回は昼夜両方の参加。結論は最高の一言!!ゆるゆりを応援していて本当に良かった!各曲の感想等いろいろとあるのですが、一番うれしかったことを一つ。

昼の部、夜の部、それぞれ初見としてのサプライズ、夜の部だけの演出としてのサプライズとあったわけですが、夜の部でのごらく部単独ライブ開催の発表!これが一番うれしくて泣いてしまった。今回のライブはめちゃくちゃ楽しみにしていた反面、2期のアニメの放送が終わって3期は未定、ふぇすてぃばる以降のイベントもほぼ未定ということで、これで終わってしまうというという恐怖感(?)のようなものがありました。しかし、この発表でそんな心配はいらないないナイアガラに!

これで終わってしまうという思いは当然ごらく部の面々にもあったようで、 MC でもそのようなことが語られていましたね。4人にとっても最高のサプライズだっただろうなあ。

ただ、単独ライブは生徒会の4人を始めとするいつもの面々は当然集まらないであろうってことで、さっきぃラブな私としては残念なところ。 MC でまたみんなでライブイベント4やりましょうみたいな話もあったので、ぜひ実現してほしいですね!!

さっきぃかわいい。

CentOS 6.x で Subversion 1.7 をコンパイルしたときのメモ

最近 CentOS 6.x で Subversion 1.7 をコンパイルすることがあったのでメモっておく。

前提

CentOS の yum で入る Subversion は 1.6 系なので 1.7 系使いたければ、自分でコンパイルするか、適当なパッケージ見つけてくる必要がある。

コンパイル手順

必要なライブラリがいくつかあるので yum で入れる。 あとは configure, make, make install のいつもの手順で。

ちなみに apr-util-devel がないと configure で怒られる。

sqlite-devel がなくても configure で怒られる。

neon-devel はなくても configure 通るけど、 svn コマンドが URL を解決できなくて困る。

コマンドラインから JSON を整形してくれる jsonpp が便利だった

JSON を出力する API の開発とかで JSON をいい感じに整形して確認したいとき、今までは Chrome 拡張の JSONView なんかを使っていたけど、コマンドから使える同様のツールないかなーと探してみたら jsonpp というのがあった。

Mac なら homebrew で簡単にインストールできる。

$ brew install jsonpp

curl にパイプしたりして使うと便利。

$ curl -d 'hoge=fuga' 'http://path/to/api' | jsonpp

ソース覗いてみたら Go で実装されていてびっくり。

一人暮らしを始めました。

タイトルはゆるゆり1巻の結衣ちゃんのセリフから。

実家を出て一人暮らし始めた。とはいっても、今日は事務手続きなどで時間を食ってしまい新しい部屋には布団もない状態で、いったん実家に撤収してきてこれを書いてたりする。この週末に改めて環境整備を進めて、来週には本格的にあっちで暮らせるようしたいなー。

第9回 Solr 勉強会にいってきた

昨日 (11月26日) に開催された、第9回 Solr 勉強会にいってきた。もろもろメモ。

Who we are, what we do, and a little bit about Kuromoji

  • Atilika Inc. Christian Moen さん
    • Kuromoji コミッタ
  • Atilika Inc. の紹介
  • Kuromoji の紹介
  • Kuromoji の今後について

  • 感想

    • 試される英語力
    • いくつか Solr 4.1 で取り込まれる改良が面白そう(サジェスタ?等)

Solr@ニコニコ生放送

  • 株式会社ドワンゴ 吉村総一郎さん (@sifue)
  • http://www.slideshare.net/sifue/20121126-solr
  • MySQL + senna から Solr へ乗り換え
    • 生放送開始後1分以内に検索にヒットするのが要件
      • Google の方が反映早いケースがあった
  • Solr 3.4.0 (patched), jetty 7.5.0, master x1, slave x2
  • 1週間以前の番組はインデックスしない(ニコ生の仕様上見られない)
    • 結果、更新多いが全量少ない
  • 来場者数とコメント数の更新頻度特に高い。
  • インデックス作成はバッチ
    • 更新、削除情報を Redis ストア→バッチで流す
  • CJKTokenizer
    • Bi-gram なので FF, DQ などに弱い
      • タグ情報付加でしのいでる
  • ピーク時 SELECT 40QPS 程度。 UPDATE 80QPS 程度。 #SolrJP
    • クローラーやユーザのツールによる突発的な負荷は適宜弾くなどで対処
  • 開発環境

    • 単一 jetty で Solr を30個近く起動
      • 開発者ごとの開発用の DB と整合とったりするため
      • jar の更新は1箇所で済んで便利
  • 感想

    • Solr 化のストーリーも構成もどこか既視感が
    • 開発環境はどこもいろいろ工夫しているんだなー

ドリルダウン色々

  • 株式会社マーズフラッグ 柳吾朗さん (@hitode7456)
  • http://www.slideshare.net/goroyanagi/solr-15369362
  • ドリルダウン検索の実装方法いろいろ
  • 力ずくの実装→ちょっと改善した実装→ Solr 4.0 の Pivot Facet を使った実装
  • 発表中に @johtani さんがつぶやいていたドリルダウンに関するリンク

  • 感想

    • Pivot Facet 便利!
    • 自分とこにも即使えそうなので試してみよう

elasticsearch と Solr の比較

追記

リンクとか。

Mac から Ubuntu に ssh ログインするとなんかロケール云々で怒られるやつ

Mac から Ubuntu 12.04 LTS に ssh でログインすると perl を始め、いくつかのコマンドで locale まわりの設定がおかしいぞみたいな感じで怒られる。コンソールからログインすると問題ない。

$ perl -v
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LC_CTYPE = "UTF-8",
	LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

locale コマンドで確認すると、どうも ssh でログインしたときだけ、 LC_CTYPE=UTF-8 になってるのがあやしい。

$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

調べてみると、下のような流れでこうなってる様子。

  • Mac の Terminal.app の Settings > Advanced > Set locale environment variables on startup がオンになっていると、 Mac 側で LC_CTYPE=UTF-8 が設定される。
  • Mac の /etc/ssh_configSendEnv LANG LC_* になっているので、 LC_CTYPEssh サーバに送信される。
  • Ubuntu/etc/ssh/sshd_configAcceptEnv LANG LC_* になっているので、 Mac からの LC_CTYPEUbuntu に渡される。
  • UTF-8 というロケールはない (正しくは en_US.UTF-8 とか ja_JP.UTF-8) ので怒られる。

どこかの層でこの流れを断てば問題は解決する。一番間違った挙動してるのは Mac の Terminal.app だと思うので、上記の "Set locale environment variables on startup" をオフにした。

$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

他に考えられる解決方法メモ。

  • Mac 側の .zshrc とかで LC_CTYPE 定義しておく。
  • Mac 側の ssh_config の SendEnvLC_* やめる。
  • Ubuntu 側の sshd_config の AcceptEnvLC_* やめる。
  • Ubuntu 側の .zshrc とかで LC_CTYPE 定義しておく。