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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Kentaro Matsumoto
July 16, 2019
Programming
0
450
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
claude_code.pdf
matsu7874
5
7.3k
Marpを使って登壇資料を作る
matsu7874
0
2k
Generate a rust client code by OpenAPI Generator
matsu7874
0
650
ざっと理解するRust 2024 Edition
matsu7874
0
1.7k
プリントデバッグを失敗させないテクニック
matsu7874
1
430
社外を巻き込んだ勉強会を定期開催するコツ
matsu7874
0
210
actix-webを使った開発のハマリポイントを避けたい
matsu7874
0
1.1k
our test strategy on actix-web app
matsu7874
0
1.7k
roadmap to rust 2024
matsu7874
0
2.1k
Other Decks in Programming
See All in Programming
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
650
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
560
Data-Centric Kaggle
isax1015
2
770
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.9k
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
170
SourceGeneratorのススメ
htkym
0
190
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
21
7.2k
AI時代の認知負荷との向き合い方
optfit
0
160
CSC307 Lecture 06
javiergs
PRO
0
680
izumin5210のプロポーザルのネタ探し #tskaigi_msup
izumin5210
1
110
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
170
Featured
See All Featured
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
440
The Curious Case for Waylosing
cassininazir
0
230
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
110
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
The Language of Interfaces
destraynor
162
26k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.9k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
6.9k
Everyday Curiosity
cassininazir
0
130
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
51
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
140
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
Ethics towards AI in product and experience design
skipperchong
2
190
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
実装が見やすい • 読むべし