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
Search Engine in Rust
Search
Kentaro Matsumoto
July 16, 2019
Programming
0
350
Search Engine in Rust
Rust実装の検索エンジンについてまとめました。2019/07/16
Kentaro Matsumoto
July 16, 2019
Tweet
Share
More Decks by Kentaro Matsumoto
See All by Kentaro Matsumoto
Generate a rust client code by OpenAPI Generator
matsu7874
0
170
ざっと理解するRust 2024 Edition
matsu7874
0
180
プリントデバッグを失敗させないテクニック
matsu7874
0
180
社外を巻き込んだ勉強会を定期開催するコツ
matsu7874
0
150
actix-webを使った開発のハマリポイントを避けたい
matsu7874
0
910
our test strategy on actix-web app
matsu7874
0
1.3k
roadmap to rust 2024
matsu7874
0
1.9k
Rust tutorial for Pythonista
matsu7874
2
1.1k
Mock testing with mockall
matsu7874
0
300
Other Decks in Programming
See All in Programming
Uncharted packages (Laravel Live Denmark)
freekmurze
0
140
フロントエンドカンファレンス北海道2024 『小規模サイトでも使えるVite 〜HTMLコーディングをよりスマートに〜』長谷川広武(ハム)
h2ham
1
2.5k
Meet BrowserEngineKit
swiftty
0
190
Polars を Kaggle コンペで使ってみた(LMSYS Chatbot Arena)
kohecchi
1
360
めざせ!WKWebViewマスター! / WKWebView Master
marcy731
3
480
Appleの新しいプライバシー要件対応: ノーコードアプリ プラットフォームの実践事例
nao_randd
1
450
LangChainでWebサイトの内容取得やGitHubソースコード取得
shukob
0
120
Web技術を駆使してユーザーの画面を「録画」する
yukukotani
13
6.2k
座談会 「Strict ConcurrencyとSwift 6が開く新時代: 私たちはどう生きるか?」
shiz
4
2.9k
詳解UIWindow
natmark
3
2k
初めてのiOS関連GitHub ActionsをMarketplaceに公開するまでの実録
konifar
3
200
『ドメイン駆動設計をはじめよう』中核の業務領域
masuda220
PRO
5
840
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
304
110k
Thoughts on Productivity
jonyablonski
65
4.2k
The Pragmatic Product Professional
lauravandoore
30
6.2k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
354
29k
What's in a price? How to price your products and services
michaelherold
241
11k
Happy Clients
brianwarren
96
6.6k
Why Our Code Smells
bkeepers
PRO
333
56k
Web Components: a chance to create the future
zenorocha
308
41k
Fashionably flexible responsive web design (full day workshop)
malarkey
400
65k
Scaling GitHub
holman
458
140k
Mobile First: as difficult as doing things right
swwweet
220
8.8k
The Power of CSS Pseudo Elements
geoffreycrofte
71
5.2k
Transcript
Search Engine in Rust 2019/07/16 Shinjuku.rs #5 @FORCIA
松本健太郎/@matsu7874 • フォルシア株式会社 エンジニア • インメモリデータベースの開発 ◦ Rustを使用
目次 1. 全文検索エンジン 2. 全文検索エンジンライブラリTantivy
Rust実装の全文検索エンジン
Rustの全文検索エンジン Project Star Contributors Sonic 6887 19 Toshi 2184 14
Rusticsearch 167 1 MeiliDB 133 6
Sonic • RocksDBに依存 ◦ facebookが開発しているkey-value store • 商用利用実績あり!
Toshi • Tantivyを使用 ◦ full-text search engine library • far
from production ready
Rusticsearch • RocksDBに依存 • 開発停止→toshiを見てね
MeiliDB • RocksDBに依存 • meiliというフランスの会社が開発 • beta版でクライアントを探している?
全文検索エンジンライブラリ Tantivy
Tantivy • 全文検索エンジンライブラリ ◦ Apache Lucene的な ◦ 高速な転置インデックスを提供する • 更新も出来るよ
• @fulmicotonさん中心に開発
なんで速いの? • FSTで辞書引き ◦ 有限状態トランスデューサー • delta-encoding ◦ 前の要素との差分を保存する •
bit pack ◦ 5とか7とかは3bitでよくね? ◦ メモリに載るぜ!
インデックス構造 • WORM: write-one-read-many • segmentという小単位で保存 ◦ これは上書きしない
更新もできるの? • add_document, delete_term • 処理はQueueに貯めていく ◦ QueueはRwLock
once_cell::sync::Lazy; • 1回与えられたら、更新されない
Tutorialが簡単 • 500万行8GBのWikipediaデータ • 4並列でindex `-t`オプション • 10分くらいでインデックスできる
Exampleが充実 • custom_tokenizer • custom_collector • update • stop_words
実装が見やすい • 読むべし