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
310
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
社外を巻き込んだ勉強会を定期開催するコツ
matsu7874
0
140
actix-webを使った開発のハマリポイントを避けたい
matsu7874
0
820
our test strategy on actix-web app
matsu7874
0
1.2k
roadmap to rust 2024
matsu7874
0
1.7k
Rust tutorial for Pythonista
matsu7874
2
960
Mock testing with mockall
matsu7874
0
250
Write Postgres Extensions with Rust!
matsu7874
0
550
Self-learning Rust way with Clippy.
matsu7874
0
670
Property-Based Testing in Rust
matsu7874
0
900
Other Decks in Programming
See All in Programming
Rails と人魚の話/rails-and-mermaid
sanfrecce_osaka
0
100
今の SmartHR にエンジニアで入社するとどうなるの?
daisukeshinoku
5
4.6k
コードレビューで学ぶ!Kotlinオブジェクト指向デザインパターン
akkie76
2
180
"config" ってなんだ? / What is "config"?
okashoi
0
220
[SF Ruby, March 2024] Rails on Wasm
palkan
0
380
元気予報
suu_mire0726
0
860
ログラスを支える設計標準について / loglass-design-standards
urmot
10
2.1k
pixivアプリでマルチモジュールを実現するまで
gatosyocora
1
130
App Router への移行は「改善」となり得るのか?/ Can migration to App Router be an improvement
takefumiyoshii
8
2.1k
ONE WEDGE_company_guide
1wedge_one
0
380
Doctrine ORMでValue Objectを扱う方法4選 #phpstudy / 4 ways to handle Value Objects with Doctrine ORM
77web
4
110
Prepare for Jakarta EE 11 - Performance and Developer Productivity
ivargrimstad
0
470
Featured
See All Featured
Become a Pro
speakerdeck
PRO
10
4.5k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
321
20k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
220
21k
Thoughts on Productivity
jonyablonski
57
3.8k
Creatively Recalculating Your Daily Design Routine
revolveconf
209
11k
Producing Creativity
orderedlist
PRO
336
39k
Art, The Web, and Tiny UX
lynnandtonic
288
19k
Code Review Best Practice
trishagee
54
15k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
Building a Scalable Design System with Sketch
lauravandoore
455
32k
Designing with Data
zakiwarfel
95
4.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
11
4.6k
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
実装が見やすい • 読むべし