-
Notifications
You must be signed in to change notification settings - Fork 56
Indexing
palmoni5 edited this page Jul 17, 2026
·
1 revision
lib/indexing/ — בניית אינדקס ה־tantivy שעליו רץ החיפוש. הליבה: repository/indexing_repository.dart.
-
סדר אינדוקס —
orderBooksForIndexing: ספרי טקסט קודם, PDF בסוף (חילוץ טקסט מ־PDF איטי פי ~10 — כך רוב הספרייה זמינה לחיפוש מוקדם). - בדיקת תאימות מנוע (
requiresManualReindex) ו־fast path אם הכל כבר מאונדקס. -
setBulkIndexing(true)— ללא מיזוגי סגמנטים תוך כדי; optimize בסוף ממזג הכל. - חימום מטמונים במקביל (דורות, ספרי יסוד, מטא־דטה של facets).
- Prefetch של PDF — חילוץ ה־PDF הבא רץ ברקע בזמן אינדוקס הספרים שלפניו (החילוץ היה 41% מזמן האינדוקס).
- commit כל 100 ספרים; optimize סופי.
buildIndexedBookFilePath(book):
- PDF ← נתיב הקובץ המוחלט (נשבר בהעברת ספרייה — ראו תחזוקה למטה).
-
כל השאר ←
catalogueOrderKey— מפתח id יציב: id:<id>(רשמי) /uid:<id>(אישי) /ext:<id>(חיצוני). חשוב כי id מספרי חופף ביןseforim.dbל־user_books.db.
מזהה מסמך: buildCatalogueDocumentId = (catalogueOrder+1) << 32 + (ordinal+1).
-
טקסט —
_indexTextBookקורא bytes גולמיים מ־SQLite ומעבירם ל־addTextBookBytesבקריאת FFI אחת (בלי פענוח/קידוד חוזר — חיסכון ~180ms/MB). -
PDF —
_indexPdfBookמחלץ עמודים בחלונות של 8 במקביל, בונה reference לכל עמוד (refFromPageNumberמה־outline), ושולח למנוע. אם אין טקסט — מנסה sidecar OCR (קובץ.txtנלווה מפוצל ב־\f); אם עדיין אין — נכתב marker של "ספר ריק" כדי שלא יעובד שוב.
-
_discardPartialBookWrites— ניקוי כתיבות חלקיות אחרי כשל. -
dropOrphanedIndexEntries— הסרת ספרים יתומים (שמרני: רקuid:ונתיבי PDF שהקובץ שלהם נעלם). -
reindexChangedBooks/reconcileIndexWithLibrary— השוואת טביעות אצבע (fingerprints) ואינדוקס מחדש רק של מה שהשתנה (טקסט בלבד — ל־PDF אין fingerprint). -
dropRelocatedFileBookEntries— ניקוי אחרי העברת מיקום הספרייה.
מצבים: Initial / InProgress / Complete / Error, עם _activeWorkId למניעת התנגשות בין עבודות ו־transformer sequential(). ההחלטה מתי לאנדקס בעליית האפליקציה — ברצף האתחול (decideStartupIndexing).
📖 מדריך למשתמש
- התחלת העבודה
- הספרייה
- קריאת ספר
- קריאת PDF
- חיפוש
- איתור מקורות
- טאבים ושולחנות
- סימניות והערות
- ספרים אישיים
- הגדרות
- גיבוי ושחזור
- עדכונים
- תוספים
- כלים
- קישורי עומק
🛠️ למפתחים — יסודות
נתונים וספרייה
קריאה
חיפוש
אישי ומערכת
עיצוב ו־UI