בתשובה לטל כהן, 15/01/04 23:11
המוס עמוס במחשבות 190613
הבנתי. הייתי מצפה שיהיו דברים כאלה מן המוכן עבור בסיס הנתונים שאתה משתמש בו, אבל אולי לייבא ולתפור אותם יותר מעיק מלכתוב אותם לבד.
המוס עמוס במחשבות 190620
הגרסה הנוכחית של MySQL (להבדיל מזו שהשתמשתי בה כשנכתבה התוכנה במקור, בשלהי האלף הקודם) אכן כוללת full-text search, אבל (א) הוא אינו חוסך את נפח הדיסק הנדרש, ו-(ב) הוא אינו הולם את לצרכינו (חיפוש "שרת" לא יעלה תגובה שמופיעה בה המלה "השרת", למשל, שלא לדבר על "ולכשהשרת").
המוס עמוס במחשבות 190621
(''את צרכינו'', כמובן, ולא כפי שקשקשתי).
המוס עמוס במחשבות 190626
והוא לא תומך בחיפוש regexp? לא שאני מציע שהאיילים ישימו כוכביות, רק שהמנוע יצמיד כוכביות למילים (אלא אם המחפש מבקש במפורש "מלים שלמות").

למה אני שואל? כי לתומי הנחתי שלמתכנת בשנת 2004 יהיו כבר מן המוכן כל הכלים הדרושים לתחזוקת אתרים ובסיסי-נתונים, ובפרט חיפושים מתוחכמים ויעילים בזמן ובזכרון. התקדמנו הרבה מאז ימי dBase וטורבו-פסקל 3, ובכל זאת על המתכנת היקר להוגיע את מוחו ולכתוב לעצמו את אלגוריתמיו. משהו לא עובד כמו שצריך.
המוס עמוס במחשבות 190630
לא, הוא לא תומך ב-regexp. למעשה, קשה לחשוב על מבנה נתונים לאינדקס שיאיץ שאילתות על regexpים שרירותיים.
המוס עמוס במחשבות 190644
הגזמתי, לא שרירותיים. סתם substrings.
המוס עמוס במחשבות 190646
למרבה הצער, ה-full text search של MySQL תומך בחיפוש עפ"י קידומת אבל לא עפ"י סיומת או תת-מחזורת שרירותית. ולמעשה, הוא לא זמין בכלל אם משתמשים ב-transactions (דהיינו ב-InnoDB).
נו, וזה לא בזיון? 190650
בצחוק, אבל אני באמת מופתע. חתיכת תוכנה מורכבת ואף פופלרית היא MySQL, לא? ואי-אפשר לחפש תת-מלה?
נו, וזה לא בזיון? 190653
אפשר, אבל לא ביעילות -- כלומר, אין אף סוג אינדקס רלוונטי.
המוס עמוס במחשבות 191070
אז אולי אפשר להוסיף שדה נסתר לכל תגובה וסיפור שיכלול את כל הסיומות האפשריות של כל אחת מהמלים בטקסט, ואז להריץ full text search עפ"י קידומת. זה יכפיל את נפח האחסון של האייל פי n, כש-n הוא אורך המלה הממוצעת (לא ביג דיל, חוץ מתגובות של אלכסנדר מאן).
המוס עמוס במחשבות 191080
יותר פשוט לממש מנגנון FTS משלנו (וזה כנראה מה שנעשה, בסופו של דבר); אלא שכרגע אין לנו את נפח הדיסק הדרוש.
המוס עמוס במחשבות 191114
לפני שכותבים משהו מאפס - כדאי אולי להעיף מבט כאן: http://jakarta.apache.org/lucene/docs/index.html
( או כאן: http://sourceforge.net/projects/clucene/ )
(זה בהנחה שאפשר לגשר על הפער בין השפה שבה כתובה תוכנת האייל (PHP?) לבין אחת מהאופציות הנ"ל).

Lucene אינו רק פרויקט קוד פתוח, אלא כתוב גם בארכיטקטורה פתוחה המאפשרת לכתוב "analyzer"-ים של טקסט - למשל לעברית.
(למען ההגינות צריך לציין שהעניין איננו פשוט כל כך - משום שהמערכת כפי שהיא אינה מאפשרת לאנדקס מילה ביותר מאופן אחד: "מספר" חייבת להישמר או כ "מספר" או כ"ספר" - האופציה הראשונה תיכשל כשמלת החיפוש תהיה "ספר", והשניה, כשמילת החיפוש תהיה "המספר").

ואם אתה כבר יודע את כל זה - סליחה על הטרחה.
המוס עמוס במחשבות 191115
תודה על ההפניות, אך כתיבת מנגנון החיפוש לא נראית לי כאתגר גדול במיוחד -- והטורח בתרגום משפה אחרת יהיה ודאי גדול יותר. השיקולים הייחודיים לאייל (עברית, מיקום הטקסט -- מאמר או תגובה, גוף הטקסט או כותרת, וכו') יהפכו את מאמץ ההמרה למורכב עוד יותר, שלא לצורך.
המוס עמוס במחשבות 191116
הממם... אני קיוויתי שתוכל להעזר ב-Lucine באחת השפות שהוא כבר כתוב בהן (כשאמרתי "לגשר" חשבתי על רכיבים שכתובים בשפות שונות ומדברים בינהם - לא על port).

לגבי חיפוש בשדות שונים (מאמר, תגובה וכו') - זה לא ייחודי כל כך, ו-Lucene תומך בכך בקלות (ללא עבודה נוספת).

אני קצת מופתע מכך שכתיבת מנגנון חיפוש (יעיל) לא נראית לך כאתגר גדול במיוחד (על Lucene עבדו, נדמה לי, לא מעט אנשים במשך זמן לא קצר). אני אשמח אם תצליח במשימה ותוכיח לי שהספקנות שלי איננה במקומה.
המוס עמוס במשימות 191117
לכשאתפנה לטפל במשימה זו, אבחן את Lucene בקפידה לפני שאתחיל. השבוע סיימתי מאמץ שנמשך כמה חודשים‏1 - שדרוג מלא של "אזור המערכת" של האייל; שינוי מהותי ומשמעותי שאף משתמש, מלבד העורכים (ואולי חלק מכותבי המאמרים) לא ירגיש בו. המשימות הבאות גם הן "מאחורי הקלעים", כמו למשל ניצול יכולות הטרנזקציה החדשות (יחסית) של MySQL.

-----
1 כמה חודשים, בעיקר משום שלא הקדשתי לו את כל זמני, כמובן.
המוס עמוס במחשבות 191072
...ואגב, טל, אני חושד שמאמר מפרי-עטך שיתאר את המבנה הבסיסי של המנוע של המוס, ובמיוחד את הבעיות המיוחדות של התמודדות עם עברית ועם הסביבה החברתית הייחודית של האייל, ובצירוף כמה אנקדוטות, ייקרא בשקיקה על ידי לא מעט איילים. ואם המאמר גם יכתב בשפה לא-טכנית ושווה לכל נפש, הוא יוכל להציג בפני כל האיילים את העולם המופלא של טכנולוגית הWeb בכלל.
המוס עמוס במחשבות 191082
העורך הראשי לא מרשה לי! (ז'תומרת, ענייני אינטרנט הם בהגדרה ה-off-topic היחיד של האתר). ואם להיות קצת יותר רציני, הצגתי חלק קטן מהבעיות הללו בהרצאה שהעברתי פעם כמרצה אורח בקורס הנדסת תוכנה בטכניון. אני לא בטוח שיש לי את הכוח הנפשי לכתוב מאמר בנדון; אולי פעם.
לא מעט איילים++ 191086

חזרה לעמוד הראשי המאמר המלא

מערכת האייל הקורא אינה אחראית לתוכן תגובות שנכתבו בידי קוראים