function query って便利ですね ~solrの function query をガリガリと活用する話~
TRANSCRIPT
![Page 1: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~](https://reader034.vdocuments.net/reader034/viewer/2022050613/5a67282f7f8b9a453d8b4b09/html5/thumbnails/1.jpg)
Function Query って便利ですね
2017/06/05
リクルートテクノロジーズ
大杉直也
1
![Page 2: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~](https://reader034.vdocuments.net/reader034/viewer/2022050613/5a67282f7f8b9a453d8b4b09/html5/thumbnails/2.jpg)
Solr本の9章後半あたりを書きました
• A/Bテスト、機械学習、レコメンドの辺り
• 自己紹介• 大杉直也
• リクルートテクノロジーズ所属• 検索改善とその周辺のことが仕事
• データサイエンティスト
• 小平ボードゲーム交流会代表
2
![Page 3: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~](https://reader034.vdocuments.net/reader034/viewer/2022050613/5a67282f7f8b9a453d8b4b09/html5/thumbnails/3.jpg)
Solr出版記念ブログでSolr以外のこと書いたら爆死した
3
https://recruit-tech.co.jp/blog/2017/05/25/abtest_solr/
![Page 4: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~](https://reader034.vdocuments.net/reader034/viewer/2022050613/5a67282f7f8b9a453d8b4b09/html5/thumbnails/4.jpg)
検索でランキングアルゴリズムが大切な理由• みんな、1ページ目のトップ3件くらいしか見ないから
4
![Page 5: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~](https://reader034.vdocuments.net/reader034/viewer/2022050613/5a67282f7f8b9a453d8b4b09/html5/thumbnails/5.jpg)
5
ストーカーでもない限り、ここから下は読まないと思う
![Page 6: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~](https://reader034.vdocuments.net/reader034/viewer/2022050613/5a67282f7f8b9a453d8b4b09/html5/thumbnails/6.jpg)
レコメンドエンジンにSolrがむいている3つの理由1. 数字だけでなく、文字列な特徴量(素性)を扱いやすい
• 形態素解析してBOWとか Similarity とか
2. オフラインでの計算だけでなく、オンラインでの計算が容易• function query でリクエストごとにアルゴリズムを変えられる
• Solrの外側でfunction queryを動的に変える仕組みが必要
3. 高負荷につよく、スケールさせやすい• そもそも検索導線とかいう過酷なところで利用される前提
• 処理を複数台に分散できる
• 更新しながらの利用もできる
6
![Page 7: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~](https://reader034.vdocuments.net/reader034/viewer/2022050613/5a67282f7f8b9a453d8b4b09/html5/thumbnails/7.jpg)
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 をガリガリと活用する話~](https://reader034.vdocuments.net/reader034/viewer/2022050613/5a67282f7f8b9a453d8b4b09/html5/thumbnails/8.jpg)
VS Elasticsearch
• Solr の方がデフォルトの function query が豊富
• (多分)設計思想の違い• Solr
• いろんな関数を用意しておくから、後は勝手にして• Linux っぽい• 組み合わせれば、かなりの自由度がある
• Elasticsearch• 我々が考える便利関数パッケージを用意しておきましたので、こちらをお使いく
ださい• Windows っぽい• Script score という凶暴なものがあるが、重くて実用には辛かった(1系時代)
8
![Page 9: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~](https://reader034.vdocuments.net/reader034/viewer/2022050613/5a67282f7f8b9a453d8b4b09/html5/thumbnails/9.jpg)
Function query の自由度よ (1/3)
9
Solr 本の300ページより引用
![Page 10: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~](https://reader034.vdocuments.net/reader034/viewer/2022050613/5a67282f7f8b9a453d8b4b09/html5/thumbnails/10.jpg)
Function query の自由度よ (2/3)
10
Solr 本の299ページより引用
![Page 11: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~](https://reader034.vdocuments.net/reader034/viewer/2022050613/5a67282f7f8b9a453d8b4b09/html5/thumbnails/11.jpg)
Function query の自由度よ (3/3)
• 特定のアイテムだけオススメしたい場合• 例:
• メニュー名に鶏肉とあるものが上位に出やすくしたい
• Similarityは考慮したくない
11
if(exist(query(!df=‘menu’ v=‘鶏肉’)), 1, 0)
本体のコードや、インデックスの中身の修正なしに、
リクエストのパラメータを変えるだけで色々と制御できるのは、
日々移り変わるビジネスの現場で(仕入れミスやシェフの気まぐれや)
迅速かつ安全な対応がとれる。Solr すげぇ!
![Page 12: Function Query って便利ですね ~Solrの Function query をガリガリと活用する話~](https://reader034.vdocuments.net/reader034/viewer/2022050613/5a67282f7f8b9a453d8b4b09/html5/thumbnails/12.jpg)
本日のLTの参考資料
12