-
Notifications
You must be signed in to change notification settings - Fork 56
Search
palmoni5 edited this page Jul 18, 2026
·
2 revisions
מנוע החיפוש של אוצריא בנוי משכבת Rust (tantivy) ושכבת Dart ב־lib/search/.
-
מנוע — חבילת pub חיצונית
otzaria_search_engine(Rust/tantivy, בריפו נפרד). המורפולוגיה העברית/ארמית — קידומות, סיומות, כתיב מלא/חסר, שגיאות כתיב, ראשי תיבות, תרגום ארמי — ממומשת בתוך ה־Rust. רשימת הקידומות/הסיומות המלאה והסמנטיקה של שילובן (קידומות בלבד / סיומות בלבד / שתיהן) מתועדת ב־docs/hebrew_morphology_search.md. -
SearchRepository— ה־API הראשי: searchTexts, searchTextsStream, searchTextsStreamWithCountsועוד, עם עשרות פרמטרים (facets, fuzzy, distance, scope, מילים חלופיות, שאילתה שלילית, ניקוד/טעמים, קיבוץ). -
SearchEngineGateway— בקשה אחידה (SearchEngineRequest) וניתוב לפי מצב. נקודה חשובה: חיפוש "מדויק" עם מרווח/אפשרויות מנותב בפועל למסלול המתקדם של המנוע. -
SearchQueryBuilder— עיבוד קלט: splitQueryWords/sanitizeQueryמואצלים למנוע ה־Rust — מקור אמת יחיד לטוקניזציה, כדי שהאינדוקס והשאילתה יהיו זהים תו־בתו.
| מצב | תיאור |
|---|---|
| מדויק (exact) | ברירת המחדל — המילים בסדרן |
| מתקדם (advanced) | scope (מרווח מילים/פסקה/כותרת), מצב התאמת מילים (כולן/אחת/רוב/לפחות N), מילים חלופיות (OR), מרווחים ידניים, שאילתה שלילית |
| מקורב (fuzzy) | מרחק עריכה 0–2 |
הליבה היא _onUpdateSearchQuery:
-
מזהה בקשה (
_searchRequestId) — מניעת תוצאות מיושנות. - stream משולב
searchTextsStreamWithCounts— מעבר אינדקס אחד מחזיר: ספירה כוללת + ספירה פר־ספר + תוצאות ב־chunks של 50 (במקום שלוש ריצות נפרדות). - ספירת facets — אם החיפוש רץ על אותו היקף, ה־stream משרת גם את עץ הקטגוריות; רק בתת־בחירה נדרשת ספירה נפרדת.
-
חתימת קלטים (
_facetCountsSignature) — מאפשרת סינון מקומי מיידי (client-side) בלחיצה על קטגוריה מצמצמת כשכל התוצאות כבר בזיכרון. -
resultsTruncated— דגל תוצאות חלקיות;LoadMoreResults— דפדוף.
-
BookFacet.buildFacetPath— נתיב facet: <נתיב קטגוריה>/<מפתח ספר>. מפתח הספר ייחודי: id:<id>(רשמי) /uid:<id>(אישי) /ext:<id>(חיצוני) / הרכבה מנתונים. -
ממדי סינון (
FacetHelper) — שורשים באנגלית: /base(ספרי יסוד), /era/<תקופה>, /author/<מחבר>. OR בתוך ממד, AND בין ממדים. -
foundational_book_classifier.dart— מסווג ספרי יסוד ל־10 דרגות (תנ"ך=1, משנה=2, בבלי=3 … שו"ע=10). - העדפות היקף נשמרות ב־
SearchScopePreferences(חפש בהכל / בחירה ידנית / ממדים — במפתחות נפרדים).
SearchCatalogueOrderHelper משחזר את סדר עץ הספרייה (17 קטגוריות ראשיות בסדר קבוע: תנ"ך, מדרש, משנה, תלמוד בבלי…) ובונה מפת סדר ב־DFS. אותו סדר משמש גם את האינדוקס (catalogueOrder).
-
category_query_parser.dart— תחבירמונח@שם@שםלצמצום החיפוש לספר/קטגוריה, כולל כינויים ושגיאות כתיב. -
snippet_builder.dart— בניית קטעי תצוגה עם הדגשות. -
find_match_utils.dart— נרמול עברי להתאמות. -
enhanced_search_field.dart— שדה החיפוש עם overlay אפשרויות.
GimatriaSearch — שלוש שיטות: רגילה, קטנה (מודולו), אותיות סופיות (ך=500…). מחפש ביטויים ששווי הגימטריה שלהם שווה ליעד, עם "עם הכולל", "פסוק שלם בלבד", וחלון גלישה של עד 8 מילים. מסלול ראשי דרך SQLite עם fallback לסריקת קבצים.
- אינדוקס
- איתור מקורות
- טאבים ושולחנות עבודה (טאב החיפוש)
📖 מדריך למשתמש
- התחלת העבודה
- הספרייה
- קריאת ספר
- קריאת PDF
- חיפוש
- איתור מקורות
- טאבים ושולחנות
- סימניות והערות
- ספרים אישיים
- הגדרות
- גיבוי ושחזור
- עדכונים
- תוספים
- כלים
- קישורי עומק
🛠️ למפתחים — יסודות
נתונים וספרייה
קריאה
חיפוש
אישי ומערכת
עיצוב ו־UI