Presentation is loading. Please wait.

Presentation is loading. Please wait.

שילוב SQL & Keywords ממילות-חיפוש לטפסי-חיפוש מוטי פורת.

Similar presentations


Presentation on theme: "שילוב SQL & Keywords ממילות-חיפוש לטפסי-חיפוש מוטי פורת."— Presentation transcript:

1 שילוב SQL & Keywords ממילות-חיפוש לטפסי-חיפוש מוטי פורת

2 From Keywords To Search Forms

3 מטרת - העל חיפוש במידע מובנה.

4 סכמה לדוגמא - DBLife persontopicpublication organization conference related_topic write_pub related_personco_author related_organization give_org_talk give_conf_talk give_tutorial serve_conf

5 חיפוש במידע מובנה למה לא לשפוך הכל לקובץ טקסט? כדי לנצל את המבניות בזמן השאילתא (תנאים על שדות). כדי לראות את המבניות בתוצאות (לראות ישויות).

6 עוד מטרה : 100% recall בגוגל מחפשים בשביל מטרה מסוימת, לכן מספיק לקבל מעט דפים טובים. אצלנו המשתמש שואל מגוון של שאלות על הנתונים. לכן רוצים למצוא את כל המופעים של מילות החיפוש. (אולי עם aggregate). אנו מחפשים מעל מסד נתונים נתון. כלומר, המטרה היא כמו של SQL, אך תוך נסיון להקל את הפעולה למשתמש הפשוט.

7 סיפור אישי מערכת מידע עם הרבה סוגי ישויות. מסכי חיפוש: חיפוש מהיר: איך? צרוב בקוד...

8 יתרונות בדרכים הקיימות למה מסך חיפוש (טופס)?  מציג כבר חלק מהפתרון.  מנצל את מבניות המידע. למה מילות חיפוש?  לפעמים יותר קל ומהיר.  יכול לכסות הרבה סוגי ישויות.

9 מוטיבציה מטרה 1: לנצל את היתרונות של מערכת טפסים. בעיה: במסד עם סכמה מורכבת (עשרות ישויות), מגוון הטפסים הוא עצום. מטרה 2: לאפשר שאילתות אד-הוק. המשתמש אולי לא יודע אילו טפסים וטבלאות קיימים.

10 הפתרון נחפש טפסים ע"י מילות מפתח! חיפוש מילים התוצאה: רשימת טפסים.

11 מערכות ומחקרים קיימים מילות חיפוש מעל מסד רלציוני מוצא את הטבלאות עם המילים הרצויות ויודע לעשות join. אבל... איך לשלוף רק את הטיסות שבהן היעד הוא ניו-יורק? age>18? aggregates? אפשרי, אם יודעים שמות שדות. רק טפסים (QBE – Query By Example) יש מעט טפסים במסד ולכן קל לבחור אחד מהם.

12 תכנון ביצוע שאילתא הצגת התוצאות

13 הבחנה טריוויאלית טופס הוא שאילתת SQL עם פרמטרים.

14 החלטה עיצובית לשמור במסד הנתונים את כל הטפסים האפשריים, כאילו "טופס" הוא ישות. מותר שיהיו הרבה טפסים אפשריים – הרי מחפשים ביניהם ע"י מילות חיפוש ולא ידנית. אבל איך "נמציא" טפסים?

15 שלבי התכנון : אילו טפסים להציע 1. נגדיר תת-שפה של SQL. 2. נבנה שאילתות-שלד – אחת לכל טבלה. 3. "שיפוץ" – הרחבת מגוון השאילתות. 4. בניית הטפסים עצמם ע"י כלי GUI אוטומטי. לטבלת ישות לטבלת קשר ידני, מעלה התלבטויות... אוטומטי פעם בחיים

16 " שיפוץ " ( הגדלת מגוון השאילתות ): התלבטות 1 עבור כל טבלה, האם להציע טופס אחד עם כל השדות, או מספר טפסים עם מעט שדות בכ"א?  אחד - יותר קל למצוא ברשימת הטפסים  אבל יותר קשה למילוי ע"י משתמש טיפש. בחירת המחברים: אחד.

17 " שיפוץ ": התלבטות 2 האם להציע טפסים עם מידע צרוב:  יתרון: הטופס ידורג גבוה אם מילות החיפוש יהיו בדיוק אלה.  חסרון: כמות אדירה של טפסים שצריך לשמור מראש ולתחזק. בחירת המחברים: לא.

18 " שיפוץ ": התלבטות 3 כמה joins בין קשרים להציע: דוגמא: במאגר DBLife יש 9 סוגי קשרים עם person. האם נציע טופס לחיפוש אנשים שגם העבירו הרצאה בכנס מסוים וגם עובדים בארגון מסוים? וגם... בחירת המחברים: join של עד שתי טבלאות קשר.  דוגמא נגדית:

19 " שיפוץ ": אפשרויות נוספות group & aggregate – על אילו שדות? union, intersection

20 תכנון ביצוע שאילתא הצגת התוצאות

21 כללי סמנטיקה (בחיפוש מילים): מימוש: Naïve-ANDNaïve-OR DI-AND DI-OR DIJ ANDOR

22 Naïve פשוט נחפש במאגר הטפסים את המילים שהמשתמש ביקש. הבעיה: טפסים הם שאילתות SQL; John אינו איבר-סכמה (שם של טבלה או עמודה).  והחלטנו לא לצרוב קבועים מהמידע בתוך השאילתות.

23 DI-OR צריך להוסיף לשאילתא את שמות הטבלאות כדי שנמצא טפסים שמאפשרים שליפה מהן. לכל מילת חיפוש נמצא את כל שמות הטבלאות שמכילות אותה בתוכנן.

24 DI-OR Rewrite the user’s query Q into R like so: For each word q i  Q: DataIndex(q i ) returns { : of tuples containing q i } Add q i and all the table-name to R. FormIndex(R, “any”) returns { form-id : of forms containing any word from R } e.g.: john papers vldb john person papers vldb topic publication conference

25 DI-AND Rewrite the user’s query Q into R like so: For each word q i  Q: DataIndex(q i ) returns { : of tuples containing q i } Add q i and all the table-name to R. FormIndex(R, “all”) returns { form-id : of forms containing all words of R } e.g.: ?

26 DI-AND Build from the user’s query Q a set of buckets {S i }: For each word q i  Q: DataIndex(q i ) returns { : of tuples containing q i } S i = {q i }  {the table-name} For each combination C=(w 1, …,w n )  S 1  …  S n FormIndex(C, “all”) returns { form-id : of forms containing all words of C } Return all the forms (that is, union of the above).

27 DI-AND לכל מילת חיפוש נמצא את כל שמות הטבלאות שמכילות אותה בתוכנן. נוסיף את שמות הטבלאות ל"דלי" של המילה. נבצע את כל השאילתות: בתוך כל אחת AND, אבל בין התוצאות שלהן – איחוד. vldb topic publication conference papersjohn person john papers vldb john papers topic john papers publication john papers conference person papers vldb person papers topic person papers publication person papers conference

28 תזכורת החיפוש מוצא את כל הטפסים שמכילים את המילים. לכן john papers vldb (והחיפוש הנגזר ממנו) יציע למשתמש לא רק את הטופס לחיפוש מאמרים של אנשים, אלא גם טפסים לחיפוש מאמרים של אנשים שהיו בכנס X, מאמרים של אנשים שעובדים בארגון Y וכו'.

29 DIJ – סילוק טפסים מתים אפשר לסלק מראש טפסים שבוודאות יתנו תוצאה ריקה. אם john מופיע בטבלה person עם pid=12345, 67890 אבל בטבלה person_organization אין אף שורה עם pid אלו, אז נפסול את כל הטפסים איתה. בעזרת Data Index תוספת בדיקה לאלגוריתם DI-AND.

30 DIJ For each word q i  Q: DataIndex(q i ) returns { : of tuples containing q i } S i = {q i }  {the table-name} For each combination C=(w 1, …,w n )  S 1  …  S n FormIndex(C, “all”) returns { form-id : of forms containing all words of C } Return all the forms For each table-name T (from the above set): For each table T2 (in the DB) that has a foreign-key to T: If T2 does not refer to any relevant tuple in T, mark T2 as forbidden. that don’t use forbidden tables. תזכורת: DI-AND

31 תכנון ביצוע שאילתא הצגת התוצאות

32 דירוג הטפסים מתייחסים לטפסים (כלומר, שאילתות ה-SQL שבהם) כטקסט, ומדרגים אותם בדרך מקובלת לדירוג טקסט. כל מערכת החיפוש – כולל הדירוג – היא ע"י מנוע Lucene. אין התייחסות לפרטי המידע (כגון כמה רשומות של John כל טופס אמור לשלוף).

33 קיבוץ הטפסים רשימת הטפסים היא בעצם עץ, שבו מקבצים את הטפסים שנגזרו מאותה שאילתת-שלד. התיאורים הוזנו ידנית בשלב התכנון.

34 תוצאות

35 הניסוי משימות נתונות שאילתות שנחקר מסוים כתב

36 תוצאות של נחקר אחד במאגר יש 196 טפסים = 14 טבלאות * 14 טפסים לכל טבלה

37 זמני העבודה של המשתמשים ממוצע על כל הקבוצה

38 תוצאות של קבוצת הנחקרים הדרגה של הטופס הנכון ברשימת הטפסים ושל הקבוצה עם הטופס הנכון, ברשימת הקבוצות.  במקרה הכי טוב, הכי גרוע והחציון

39 תוצאות עם יותר טפסים במאגר כנ"ל, אך במאגר עם 700 טפסים  שכוללים את כל ה-join-ים בין שלוש טבלאות קשר. כל שאילתא מחזירה בממוצע 27.8% מהטפסים במאגר – בדיוק אותו אחוז כמו עם המאגר הקודם.

40 שאלות ? יאללה הביתה


Download ppt "שילוב SQL & Keywords ממילות-חיפוש לטפסי-חיפוש מוטי פורת."

Similar presentations


Ads by Google