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
860
Algolia 2020 Autumn
shinodogg
0
3.1k
Algolia introduction - DEMO and Ranking Formula
shinodogg
0
400
Introducing Algolia with Demo
shinodogg
0
6k
Algolia Announces Global Expansion Into Japan
shinodogg
0
2.3k
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
580
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
Oracle Database Technology Night #87-1 : Exadata Database Service on Exascale Infrastructure(ExaDB-XS)サービス詳細
oracle4engineer
PRO
1
110
プロダクトエンジニア構想を立ち上げ、プロダクト志向な組織への成長を続けている話 / grow into a product-oriented organization
hiro_torii
1
340
Amazon Aurora のバージョンアップ手法について
smt7174
1
130
JavaにおけるNull非許容性
skrb
2
2.5k
手を動かしてレベルアップしよう!
maruto
0
150
ソフトウェアエンジニアと仕事するときに知っておいたほうが良いこと / Key points for working with software engineers
pinkumohikan
1
140
AIエージェント元年@日本生成AIユーザ会
shukob
0
120
Share my, our lessons from the road to re:Invent
naospon
0
130
RemoveだらけのPHPUnit 12に備えよう
cocoeyes02
0
200
データベースの負荷を紐解く/untangle-the-database-load
emiki
1
130
エンジニアリング価値を黒字化する バリューベース戦略を用いた 技術戦略策定の道のり
kzkmaeda
6
2k
1行のコードから社会課題の解決へ: EMの探究、事業・技術・組織を紡ぐ実践知 / EM Conf 2025
9ma3r
8
3.1k
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
Designing for humans not robots
tammielis
250
25k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
Faster Mobile Websites
deanohume
306
31k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Why Our Code Smells
bkeepers
PRO
336
57k
Bootstrapping a Software Product
garrettdimon
PRO
306
110k
Navigating Team Friction
lara
183
15k
Typedesign – Prime Four
hannesfritz
40
2.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Transcript
Algolia活用のベストプラクティス Eiji Shinohara Senior Manager, Solutions Engineer - Japan eiji@algolia.com
@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 eiji@algolia.com
@shinodogg #AlgoliaJP