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
480
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Search Engine in Rust
Rust実装の検索エンジンについてまとめました。2019/07/16
Kentaro Matsumoto
July 16, 2019
More Decks by Kentaro Matsumoto
See All by Kentaro Matsumoto
claude_code.pdf
matsu7874
5
7.6k
Marpを使って登壇資料を作る
matsu7874
0
2.4k
Generate a rust client code by OpenAPI Generator
matsu7874
0
770
ざっと理解するRust 2024 Edition
matsu7874
0
1.9k
プリントデバッグを失敗させないテクニック
matsu7874
1
490
社外を巻き込んだ勉強会を定期開催するコツ
matsu7874
0
240
actix-webを使った開発のハマリポイントを避けたい
matsu7874
0
1.2k
our test strategy on actix-web app
matsu7874
0
1.8k
roadmap to rust 2024
matsu7874
0
2.2k
Other Decks in Programming
See All in Programming
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
190
メールのエイリアス機能を履き違えない
isshinfunada
0
170
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
2
250
今さら聞けない .NET CLI
htkym
0
170
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
290
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
140
FDEが実現するAI駆動経営の現在地
gonta
2
240
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
620
Build-to-own AI: Agentic Development for Humans
inesmontani
PRO
0
130
5分で問診!Composer セキュリティ健康診断
codmoninc
0
770
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
1
260
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
460
Featured
See All Featured
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
520
Building Adaptive Systems
keathley
44
3.2k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Balancing Empowerment & Direction
lara
6
1.2k
Embracing the Ebb and Flow
colly
88
5.1k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
650
Visualization
eitanlees
152
17k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
820
4 Signs Your Business is Dying
shpigford
187
22k
ラッコキーワード サービス紹介資料
rakko
1
4.1M
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
230
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
実装が見やすい • 読むべし