מסתבר שהחיפוש באורייתא יכול להיות הרבה יותר מהיר משחשבנו, גם בלי שימוש בכל מיני אינדקסים מתוחכמים.
הסיבה היא, שרוב הזמן של החיפוש מוקדש לפענוח הפורמט של הקובץ ומעקב אחרי המיקום בספר תוך כדי החיפוש (כמו שנעשה בתורת אמת), או ביצירת מאגר ממופה לפרקים של טקסט בלבד, שעליו מבוצע החיפוש (כמו שנעשה אצלנו).
מאחר וזה המצב, הפתרון הוא לשמור את הטקסט ה'נקי' ההוא בקובץ, ולא לייצר אותו כל פעם מחדש.
ניסיתי את זה בעבר ופשוט היו לי יותר מדי באגים וזנחתי את זה. עכשיו נכנסתי לעניין מחדש, והצלחתי, אני מקווה, לפתור את כולם.
זה אומר שבפעם הראשונה שהתוכנה נפתחת מבוצע ברקע עיבוד לכל הספרים, ומאז חיפושים נעשים הרבה יותר מהר.
(עד להשלמת העיבוד החיפוש ייקח אותו זמן כפי שלקח בעבר לספר שעוד לא עובד, והרבה פחות זמן לספרים שכבר עברו עיבוד. ככה שאין שום בעייה לחפש גם במהלך בניית המאגר. בעצם אין שום שלב שבו המאגר 'מוכן' או 'לא מוכן', זה תלוי לפי כל ספר).
בסופו של דבר חיפוש בכל הספרים של אות אנגלית בודדה (החיפוש שאמור לקחת הכי הרבה זמן כי הוא קצר ואין לו כמעט תוצאות) לקח אצלי 13 שניות, בהשוואה לבערך שתי דקות שהיה לוקח לו פעם. (זה לא במהירות הבזק, אבל מצד שני חיפוש נורמלי אמור לקחת פחות זמן.)
המחיר הוא עוד 200 מ"ב על ההארד דיסק. אני מקווה לצמצם גם את זה, אבל בכל מקרה זה שווה את זה.
תפקידכם:
א. לבדוק את הקוד החדש (שבטח ייבנה לבד בקרוב במאגר המעודכן), ולראות שזה אכן עובד ומהיר.
ב. להגיד לי האם צריך לעשות את זה אופציונאלי (בשביל אלה שמתקמצנים על ההארד דיסק), או ש 200 מגה זה באמת זניח.
תהנו,
משה