Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Algolia Best Practices Fall 2020
Search
Eiji Shinohara
October 22, 2020
Technology
2
1.1k
Algolia Best Practices Fall 2020
Serverless Meetup Japan Virtual #9 (爆速検索Algolia特集)の発表スライドです
Eiji Shinohara
October 22, 2020
Tweet
Share
More Decks by Eiji Shinohara
See All by Eiji Shinohara
Algolia Fall 20 Release - wrap up in Japanese
shinodogg
0
840
Algolia 2020 Autumn
shinodogg
0
3.1k
Algolia introduction - DEMO and Ranking Formula
shinodogg
0
370
Introducing Algolia with Demo
shinodogg
0
5.9k
Algolia Announces Global Expansion Into Japan
shinodogg
0
2.2k
Introducing Algolia in a nutshell
shinodogg
1
1.2k
AWS Loft Tokyo のASK AN EXPERT ブースにおけるご相談・ご対応ログ を分析しました :)/ ASK AN EXPERT at AWS Loft Tokyo - Tech Consulting Log Analysis
shinodogg
0
560
Building and Running Microservices with AWS
shinodogg
0
710
Accelerating AdTech on AWS in Japan
shinodogg
1
330
Other Decks in Technology
See All in Technology
Qiita埋め込み用スライド
naoki_0531
0
5.1k
複雑性の高いオブジェクト編集に向き合う: プラガブルなReactフォーム設計
righttouch
PRO
0
120
C++26 エラー性動作
faithandbrave
2
760
5分でわかるDuckDB
chanyou0311
10
3.2k
祝!Iceberg祭開幕!re:Invent 2024データレイク関連アップデート10分総ざらい
kniino
3
310
大幅アップデートされたRagas v0.2をキャッチアップ
os1ma
2
540
継続的にアウトカムを生み出し ビジネスにつなげる、 戦略と運営に対するタイミーのQUEST(探求)
zigorou
0
590
Amazon SageMaker Unified Studio(Preview)、Lakehouse と Amazon S3 Tables
ishikawa_satoru
0
160
AI時代のデータセンターネットワーク
lycorptech_jp
PRO
1
290
開発生産性向上! 育成を「改善」と捉えるエンジニア育成戦略
shoota
2
400
成果を出しながら成長する、アウトプット駆動のキャッチアップ術 / Output-driven catch-up techniques to grow while producing results
aiandrox
0
350
普通のエンジニアがLaravelコアチームメンバーになるまで
avosalmon
0
110
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Navigating Team Friction
lara
183
15k
Bash Introduction
62gerente
608
210k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
A Modern Web Designer's Workflow
chriscoyier
693
190k
Producing Creativity
orderedlist
PRO
341
39k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
A Tale of Four Properties
chriscoyier
157
23k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Transcript
Algolia活用のベストプラクティス Eiji Shinohara Senior Manager, Solutions Engineer - Japan
[email protected]
@shinodogg #AlgoliaJP
What is Algolia? Search and Discovery - 爆速なフルマネージド型の検索ソリューショ ン -
全文検索だけではないフルスタックでカスタ マイズ可能な機能群 - Netflix, Amazon, Google等、業界のリー ダーたちが提供しているようなワールドクラ スのユーザー体験を素早く提供 - もちろん日本語にも対応しています! Personalized first page Recommendations Voice Geo Interactions
C O N F I D E N T I
A L …あらゆるプラットフォームに
C O N F I D E N T I
A L ALGOLIA’S MISSION: 全ての企業が魅力的な Search and Discovery 体験を導入できるように
“欲しいものが簡単に見 つかる?” “結果を出すためのより 良いインサイトや管理 が出来る?” “簡単に実装/メンテで きるイノベーティブな もの?” ワールドクラスのユーザー体験 -
End-user - 欲しいものに辿り着ける - レスポンスが高速である - Business-owner - メトリクスを管理しやすい - アイデアを簡単に形に - PDCAサイクルを回すことができる - Developer - 開発/運用が容易 - カスタマイズ可能
Algolia @ 日本 篠原 @shinodogg : Solutions Engineer 半田 @t2hnd
: Support Engineer 前職で一緒にAWSの検索サービスを担当してた2人で Techな感じでやっています〜 #AlgoliaJP
Algolia Podcast - algolia.fm - 毎週Algoliaに関連する耳寄りな情報をお届けするPodcast - 新機能や新料金プランのご説明 - Webinarの日本語でのまとめ
- 日本語に翻訳したブログの解説 - よくあるお客様からのお問い合わせ内容とその解決策 #AlgoliaJP
検索、、Googleみたいな感じ?
ホステッド型のサイト内検索 - Google検索はあなたのサイトにユーザーを誘導 - SEO重要 - 必要に応じてリスティング広告など - Algoliaはあなたのサイト内の検索 -
検索およびブラウジング機能 - 検索キーワードごとの振る舞いの変更 - ご自身で戦略を構築可能なパーソナライズ
検索エンジンと私
その昔… 検索キーワードに連動した広告コンテンツ (PR) を配信するお仕事をしていました。
Apache Solrという検索エンジンを当 時よく使っていました
なぜ MySQL や PostgreSQL のようなデータベースではなく、 検索エンジンを使おうと思ったのでしょうか?
id name lv comment 79854 トミー 7 趣味は筋トレ。100kgのベンチプレスを軽々上げる 79855 ニッキー
8 ピアノが得意な調理師免許保持者 79859 ジョン 6 サッカーが得意なスタジオミュージシャン 例えばこんなデータがあったとして…
例えばこんなデータがあったとして… SELECT name FROM people WHERE comment LIKE '%調理師%'; データの件数が少なかったり、アクセス頻度が低ければ大丈夫かもしれませんが…^^;
id name lv comment 79854 トミー 7 趣味は筋トレ。100kgのベンチプレスを軽々上げる 79855 ニッキー 8 ピアノが得意な調理師免許保持者 79859 ジョン 6 サッカーが得意なスタジオミュージシャン
じゃあ、これAlgoliaに入れてみましょう ▪ TSV(タブ区切り)ファイルにしてIndexを作ってUpload id name lv comment 79854 トミー 7
趣味は筋トレ。100kgのベンチプレスを軽々上げる 79855 ニッキー 8 ピアノが得意な調理師免許保持者 79859 ジョン 6 サッカーが得意なスタジオミュージシャン
Index LanguagesとQuery Languagesを日本語に
『ピアノ 調理師』で検索 → ニッキーがヒット
『得意』で検索 → ジョンとニッキーがヒット
『得意』で検索 → ジョンとニッキーがヒット 例: レベルの降順にしたい AlgoliaでのSorting and Ranking - Sorting:
事前にソート済みの Replica Indexを 作成 - Custom Ranking: Textual Relevanceの処 理を行った後に並べ替えを行う https://www.algolia.com/doc/guides/managing-results/refine-results/sorting/#sorting-vs-ranking
Deliver experiences Search Index Algolia活用のフロー
Serverless で Algolia に Indexing https://speakerdeck.com/miup/algolia-with-firebase?slide=19 Algolia with Firebase @
komerco Cloud Functionsを使ってAlgoliaにIndexing https://firebase.google.com/docs/firestore/solutions/search
https://resources.algolia.com/home/devvirtualevent-thetimesinternalsearch-publishers Serverless で Algolia に Indexing How The Times improves
digital newsroom productivity with Algolia AWS Lambdaを使ってAlgoliaにIndexing ウェブサイトの編集者が沢山の記事の 中から最適なものを見つけてページを 組み立てていく
それでは、そろそろ ”爆速”に関するお話をしましょう
https://www.youtube.com/watch?v=Fz1zyvcWBTo
Milliseconds Matter ミリ(1/1000)秒が重要って話
2017年12月 CTO Night and Day in 金沢
2017年12月 CTO Night and Day in 金沢
Algolia社員がよく使ってる壁紙 “MILLISECONDS MATTER”
17 Regions 70+ Data centers Offices Infrastructure Regions Global Availability
across 17 regions worldwide
17 Regions 70+ Data centers Offices Infrastructure Regions Global Availability
across 17 regions worldwide - 世界中のどこからアクセスされても低レイテンシを実現 - 光の速さは超えられない - 日本は東京と大阪にデータセンター - エンドユーザーのブラウザ/アプリに出来るだけ近く
Algolia検索に最適化されたサーバークラスタ http://highscalability.com/blog/2015/3/9/the-architecture-of-algolias-distributed-search-network.html https://stories.algolia.com/algolia-s-fury-road-to-a-worldwide-api-c1536c46f3a5
いくつかトピックをご紹介 - 1つでもネットワークレイヤーの数を少なく! - ロードバランサーではなくDNSラウンドロビン (Smart Algolia Client) - QueryおよびIndexing処理のメモリマネージメントは自分たちで
- C++で実装。Nginxのプラグインとして稼働 - 基本的にはIndexの全ての情報をメモリに載せる - Premiumプランのadd-onとして物理サーバークラスタを選択可能 - 仮想化のオーバーヘッドがミリsecの遅延をもたらす可能性 - フルに筐体の全リソースを使いきる - オンプレのリソースに載りきらないケースではクラウドのベアメタルも選択可能
2012年にモバイルの検索エンジンとし てスタート ⏤ Mobile SDK ⏤ APIやインターネット接続は不要 ⏤ Indexingも検索もモバイルデバイス上で ⏤
Android端末やiPhone 3Gなどで動作
2013年前半に, Hosted Search API にピボット ⏤ モバイルと同じコードでサーバーで稼働 ⏤ Authenticated REST
API ⏤ High-availability はまだ実装されていなかっ た ⏤ パフォーマンスにフォーカスするために物理 サーバーを選択 RAM: 32GB Proc: 4 cores, 3.4-3.8 GHz SSD: 2x120 GB Raid-0
https://www.slideshare.net/saasisbeautiful/s-36291627
Algoliaインフラの今までの変遷
Algoliaインフラの今までの変遷 ServerlessのMeetupなのであまり多くは語りませんが、 お客様がサーバーとかスケールとか意識しなくても良いように 日々頑張っています!!
ブログからどんな風に運用しているのか垣間見ることができます https://shinodogg.com/2020/05/08/salt-incident-may-3rd-2020 -retrospective-and-update/ https://shinodogg.com/2020/06/05/may-30-ssl-incident/
Serverless Community と Algolia
SERVERLESS CONF - LONDON ‘16 私のHiring Managerでありメンター。 去年お子さんが産まれて、最近パリからボル ドーに引っ越しました :)
https://www.youtube.com/watch?v=YfR9oyzoWbc ServerをLessに!
Algoliaのベストプラクティス
InstantSearch > Open Source の Search UI ライブラリ > Algolia
のフロントエンド用に実装されている > ベストプラクティスとGood Designをパッケージ化 > カスタマイズが容易
InstantSearch <-> Algolia REST API - ブラウザ/モバイルアプリから直接APIへ検索リクエスト - 検索リクエストに関してCMS等のバックエンドは考慮する必要が ないためHeadlessな構成と非常に相性が良い
- データの登録やインデックスの設定は各種クライアントライブラ リ、プラグイン、Dashboardで! Connectors ・Algolia for Zendesk ・Algolia for Shopify ・Algolia for Magento ・Algolia for SFCC ・Algolia for Netlify Algolia API と InstantSearch Algolia API Clients ・Android ・PHP ・Ruby ・JavaScript ・Python ・Kotlin ・.Net ・Java ・Golang ・Scala ・iOS Helpers API Clients JS / iOS / Android Algolia Crawler Algolia WordPress Plugin Gatsby plugin Algolia RetryやDNSの名前解決 のtimeout制御など New
InstantSearchのWidgetの活用
InstantSearchのWidgetの活用 例えば、キーワードで検索したけどヒットした結 果が多過ぎる場合などに便利です。
InstantSearchのWidgetの活用 他にも、カテゴリで絞り込んだり、価格で絞り込 んだりといったユースケースもよくお見かけしま す。
InstantSearch - Widgets Showcase https://www.algolia.com/doc/guides/building-search-ui/widgets/showcase/js/
InstantSearch - Widgets Showcase https://www.algolia.com/doc/guides/building-search-ui/widgets/showcase/js/
Ease your contribution process with automation Vincent Voyer InstantSearch
Unified InstantSearch for E-commerce 最も簡単にeコマース用の Search & Discovery体験を構築する方法
Unified InstantSearch for E-commerce https://ranqueen.ninja/ フロントはAmazon S3 に、 HTML/JavaScript/CSSが 配置されているだけ
Unified InstantSearch for E-commerce https://github.com/algolia/unified-instantsearch-ecommerce/wiki https://shinodogg.com/2020/05/15/unified-instantsearch/ 導入は難しくありませんし、 使い方のWikiを日本語に翻訳したものも あります。
Federated Search
Federated Search
Federated Search 人気 高レーティング セール中 人気 高レーティング セール中
Algolia Pricing 1000回の検索リクエストで 1ユニット
Federated SearchでのSearch Request - 2020年7月以前の旧料金プランでは複数のIndexに対するアクセスに関して、 それぞれのIndex毎にSearch Operationsとしてカウントしていた - 新しくなった料金プランでは、複数のIndexに対するアクセスでも、Federated Searchの場合、1つのSearch
Requestとしてカウント - 特にas-you-type search(1文字入力毎の検索)の場合、差が顕著に
Query Suggestions ▪ Standardプランでも使えます(旧料金プランではEnterprise契約が必要でした) ※ Algoliaが日次で検索クエリを元に Indexを構築
Query Suggestions ▪ メインのIndexとサジェスチョン用IndexのFederated Search
Algoliaにおける 検索結果の表示順の調整
C O N F I D E N T I
A L Searchable Attributes ▪ 上位定義の属性が優先 e.g. title, author ▪ Ordered/Unordered 属性の中でマッチしたポジションを ランキングの考慮に入れるかどうか Ranking and sorting ▪ Textural e.g. typo, filter, proximity, attribute,, ▪ Custom Ranking e.g. 人気スコア, 在庫数 ▪ Sort-by 事前にソートする。レプリカインデック スを作成して適応 AlgoliaのベーシックなRelevancy
Personalizationを有効にする場合: ─ 自動的にユーザーの行動履歴によって検索結果がカスタマイズされる ─ より適合性/関連性が高まりクリックやコンバージョン数が増える AlgoliaのPersonalization eコマースの例: “harry”で検索 ─ ハリーポッターの本が表示されて嬉しい
人 ─ Prince Harryに関連するグッズが表示 されると嬉しい人
Personalizationの設定: ─ イベントによる重み付けのカスタマイズ ─ パーソナライズ前後の検索結果の比較が可能 AlgoliaのPersonalization
Algolia Advanced Analytics
• Total Searches: 検索実行数 (as-you-typeはアグリゲート) • Users: 検索を実行したユニークユーザー数 • No
results rate: ‘no results’(検索結果なし)の割合 • CTR (click-through-rate): 検索を実行した後のクリックの割合 • Conversion rate: 検索結果が最終的にconversion(購買など)に結びついた割合 • Click position: 検索結果のどのポジションでクリックがされているかの平均 AnalyticsのDashboardの例
AnalyticsのDashboardの例 直近の検索トレンド クリックポジションの 平均値の比較
AnalyticsのDashboardの例
A/B testing 設定の異なる2つのインデックスにトラフィックを分散 (例: 50-50, 70-30)させて、 それぞれのAnalyticsの結果を比較する機能 ※ クリックとコンバージョンのトラッキングが有効になっている必要があります 設定による効果の比較例
: • Query Rules • Personalisation • Synonyms • Optional words • Remove words if no result • Hits per page
素晴らしい体験の提供を 元にリアルな結果を! Deliver great experiences that deliver real results. 開発者
More time to innovate ビジネスオーナー Optimized for key metrics エンドユーザー Fast, relevant and amazing
ありがとうございました! Eiji Shinohara Senior Manager, Solutions Engineer - Japan
[email protected]
@shinodogg #AlgoliaJP