function query って便利ですね ~solrの function query をガリガリと活用する話~

12
Function Query って便利ですね 2017/06/05 リクルートテクノロジーズ 大杉直也 1

Upload: naoya-oosugi

Post on 23-Jan-2018

2.631 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~

Function Query って便利ですね

2017/06/05

リクルートテクノロジーズ

大杉直也

1

Page 2: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~

Solr本の9章後半あたりを書きました

• A/Bテスト、機械学習、レコメンドの辺り

• 自己紹介• 大杉直也

• リクルートテクノロジーズ所属• 検索改善とその周辺のことが仕事

• データサイエンティスト

• 小平ボードゲーム交流会代表

2

Page 3: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~

Solr出版記念ブログでSolr以外のこと書いたら爆死した

3

https://recruit-tech.co.jp/blog/2017/05/25/abtest_solr/

Page 4: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~

検索でランキングアルゴリズムが大切な理由• みんな、1ページ目のトップ3件くらいしか見ないから

4

Page 5: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~

5

ストーカーでもない限り、ここから下は読まないと思う

Page 6: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~

レコメンドエンジンにSolrがむいている3つの理由1. 数字だけでなく、文字列な特徴量(素性)を扱いやすい

• 形態素解析してBOWとか Similarity とか

2. オフラインでの計算だけでなく、オンラインでの計算が容易• function query でリクエストごとにアルゴリズムを変えられる

• Solrの外側でfunction queryを動的に変える仕組みが必要

3. 高負荷につよく、スケールさせやすい• そもそも検索導線とかいう過酷なところで利用される前提

• 処理を複数台に分散できる

• 更新しながらの利用もできる

6

Page 7: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~

Solrのランキングアルゴリズムの自由度高さは素敵1. Sort のパラメータに score をいれる

2. Function query で score の値をつくる

• テキスト検索時のSimilarityも function query の query 関数を使って、function query の一要素とみなせる

• 「100% こっちの方を上位に出さなければならない」のようなガチガチのビジネスロジックでもないかぎり、function query で制御していたほうがなにかと楽

7

鶏肉仕入れすぎちゃったから、季節のおすすめ商品と同じ感じで

鶏肉のソテーもおすすめしておいて*とあるレストランでの会話(フィクション)

Page 8: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~

VS Elasticsearch

• Solr の方がデフォルトの function query が豊富

• (多分)設計思想の違い• Solr

• いろんな関数を用意しておくから、後は勝手にして• Linux っぽい• 組み合わせれば、かなりの自由度がある

• Elasticsearch• 我々が考える便利関数パッケージを用意しておきましたので、こちらをお使いく

ださい• Windows っぽい• Script score という凶暴なものがあるが、重くて実用には辛かった(1系時代)

8

Page 9: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~

Function query の自由度よ (1/3)

9

Solr 本の300ページより引用

Page 10: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~

Function query の自由度よ (2/3)

10

Solr 本の299ページより引用

Page 11: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~

Function query の自由度よ (3/3)

• 特定のアイテムだけオススメしたい場合• 例:

• メニュー名に鶏肉とあるものが上位に出やすくしたい

• Similarityは考慮したくない

11

if(exist(query(!df=‘menu’ v=‘鶏肉’)), 1, 0)

本体のコードや、インデックスの中身の修正なしに、

リクエストのパラメータを変えるだけで色々と制御できるのは、

日々移り変わるビジネスの現場で(仕入れミスやシェフの気まぐれや)

迅速かつ安全な対応がとれる。Solr すげぇ!

Page 12: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~

本日のLTの参考資料

12