efficient keyword search over virtual xml views
DESCRIPTION
Efficient Keyword Search over Virtual XML Views. Feng Shao Lin Guo Chavadar Botev Anand Bhaskar Muthiah Chettiar Fan Yang. רקע: מהו XML ? מסמך XML מורכב מאלמנטים מקוננים, החל באלמנט השורש כל אלמנט יכול להכיל תכונות וערכים - PowerPoint PPT PresentationTRANSCRIPT
Efficient Keyword Search over Virtual XML Views
Feng Shao
Lin Guo
Chavadar Botev
Anand Bhaskar
Muthiah Chettiar
Fan Yang
?XMLרקע: מהו
מורכב מאלמנטים מקוננים, החל באלמנט השורשXML מסמך •
כל אלמנט יכול להכיל תכונות וערכים•
יוחזר עבור כל אלמנט ואלמנט, ולא עבור כל XML ניקוד לשאילתה המבוצעת על מסמך •המסמך
:TF-IDF - במסמך זה נתייחס לניקוד לפי שיטת
tf(e,k) מספר המופעים של מילת המפתח – k באלמנט eוצאצאיו
למספר האלמנטים view - יחס מספר האלמנטיםב kשמכילים את
| ( ) |( )
{ | ( ) ( , )}
V Didf k
e e V D contains e k
( , ) ( ( , ) log( ( )))k Qscore e Q tf e k idf k
Dewey ID שיטת מספור לאלמנטים בה המספור של האלמנטים הינו – prefix של אביו בתור ID של אלמנט מסויים מכיל את ה IDהיררכי כך ש
?Viewרקע: מהו
• View.הוא טבלה וירטואלית, המוגדרת בעזרת שאילתה
דומה מאוד לטבלה אמיתית, מלבד העובדה שהוא לא שומר מידע•
הנתונים שבו מחושבים דינאמית כאשר פונים אליו•
views עלות גבוהה של זמן חישוב ושל משאבי חישוב בעת חישוב שאילתות מעל •
הצגת הבעיה
, פעולה זו יקרה בגלל ההנחה keyword לפי view הבעיה הינה בעת חיפוש ב •שמבצעים חיפוש על דף "מוכן"
. זה יקח זמן רב.view בשביל לבצע את החיפוש, דרוש מימוש ה •
מפריע במיוחד בעת ביצוע פעולות בזמן אמת•
הערכים הטובים ביותר, וכדי לעשות את זה צריך לתת ניקוד Kבד"כ מחזירים את • איננו כזה, ומימוש כולו View). הניקוד דורש מסמך ממשי. TF-IDFלמסמך (לדוגמה
ערכים יקר ובזבזניKרק לשם הצגת
הערכים הטובים K, והחזרת XML ב viewsהמאמר מציג דרך לחיפוש יעיל מעל (בהתאם לשיטת הניקוד)
דוגמה
שילוב מידע
אתר מסויים שומר מידע על ספרים, אתר שני על ביקורות לספרים.
נרצה לאחד בין ספר לביקורות עליו ולבצע שאילתות על התוצאה המתקבלת
XQuery והכנסת השאילתה ע"י viewיצירת ה
הגדרה פורמלית לבעיה
1עבור שאילתה: 2{ , ,...., }nQ k k k
Vמבט
Dומסד נתונים
כך ש:s היא הסדרה keywordsתוצאת החיפוש ע"פ
view הוא אלמנט ב s כל אלמנט ב •
q מכיל את Q: e ב q, וכל מילת חיפוש s ב e עבור כל אלמנט •
e מכיל את s, אם הוא מכיל את כל view ב e לכל אלמנט •
התוצאות בעלות הניקוד הגבוה ביותרk מכיל את sהערה:
q Q
רעיון הפתרון המרכזי
שימוש באינדקסים המבוססים על נתוני הבסיס
viewנחשב את השאילתה מעל הנתונים הדרושים בלבד, ולא מעל כל ה
•Inverted list index משמש לביצוע חיפוש לפי - keywords
• path index משמש להערכת נתיב ב – XML
האינדקסים הקיימים
מהן הבעיות העומדות בפנינו?
כיצד פותחים במדויק את השדות שדרושים לנו, בלי לפתוח את כל •המסד?
, כך view כיצד נותנים ניקוד לכל מסמך בשאילתה שנבצע על ה • וחיפשנו בו?viewשהתוצאות תהיינה זהות למצב בו מימשנו את ה
האלגוריתם המוצע מורכב משלושה שלבים:
– עץ אשר מייצג במדוייק אילו חלקים מנתוני QPT (query pattern tree)יצירת 1)הבסיס דרושים לחישוב התוצאה הפוטנציאלית. לשם יצירתו, האלגוריתם מנתח
מהשאילתה.keywords ואת ה viewאת הגדרת ה
בנפרדXML מחושב עבור כל מסמך
- מכיל חלקים קטנים מנתוני הבסיס. PDT – pruned document treeיצירת 1) שחושב QPTחלקים אלו הם החלקים הדרושים לשם מענה על השאילתה, לפי ה
נבנה אך ורק ע"י אינדקסים, ללא כל גישה למסד הבסיס.PDTבשלב הקודם. ה
.keywords כמו כן, בשלב זה נשמרות סטטיסטיקות לגבי ה
בנפרדXML מחושב עבור כל מסמך
התוצאות הטובות K) ומימוש view (במקום מעל ה PDTפיתוח השאילתה מעל ה 1)ביותר.
K זה השלב היחיד בו יש גישה לנתוני הבסיס, וגם היא, רק עבור מי שמחזיר את התוצאות הטובות ביותר.
PDT תואם עבור כל QPT
QPT מכיל רק אלמנטים שמתאימים לצמתים ב •
מכיל רק ערכים שהכרחיים בעת הערכת השאילתה•
תרשים המערכת
• QPT מזהה בדיוק את החלקים הדרושים לביצוע השאילתה ומשכתב את ולא מנתוני המקורPDTכך שתיקרא מה המקוריתהשאילתה
PDT. השאילתה המשוכתבת מוערכת על ה query evaluator אין כל שינוי ל •
התוצאות מקבלות ניקוד, ורק אלו עם התוצאות הגבוהות ביותר ממומשות•
QPTמבנה ה
קו רגיל – אב/בן•
קו כפול – צאצא/אב קדמון•
קו מקווקו – קשר אופציונאלי•
קו רציף – קשר הכרחי•
לצמתים יכולה להיות תכונה•
• V דרוש ליצירת ה – view
• C שייך לפלט ה – view משתמשים ,בו רק בזמן המימוש
PDT האילוצים של ה 3
רק אם יעמוד PDT, ייבחר ל QPT ב n במסמך, שתואם לצומת eאלמנט בשלושת האילוצים הבאים:
(1Ancestor constraint אלמנט שהוא אב קדמון של – e שתואם לאביו ,, ייבחר גם הואQPT ב nשל
(2Descendant constraint בין חובה – עבור כל קשת n לעבר בנו, לפחות ייבחר גם הואnאלמנט ילד או צאצא אחד של
(3Predicate constraint אם - eעלה, הוא יעמוד בכל התכונות הדרושות
PDTהגדרה פורמלית –
האלגוריתם המוצע
מאופיין ע"י:
באינדקסים פרופורציוני לגודל השאילתה ולא לנתוני lookups מספר ה •הבסיס
Prepare Listsאלגוריתם
:PDT ושל ערכי האלמנטים הדרושים ל dewey ID’s מטרתו: הכנת רשימות של •
- ערכים שאין חובה שיהיה להם בן
V - ערכי
שאין חובה שיהיה להם בן (כולל עלים). הם QPT לצמתי lookup תחילה נעשה • (למעשה ממלאים אותה descendant מבלי למלא את דרישת ה PDTיכולים להיות ב
באופן ריק).
) – נחפש רק אלמנטים שמקיימים predicat עם תכונה (QPT אם האלמנט מקושר ב •את התכונה
lookups (ניתן לשלב עם ה V annotation נפרדים עבור צמתי lookups נעשה •הקודמים)
נקבל את הרשימות עבור כל בעל המסלול אותו נחפש. נמזג את lookups ב • את הערך ID, המקשרת לכל dewey IDהרשימות ונקבל רשימה ממוזגת וממוינת לפי
שלו (כאשר קיים ערך)
)books//book/isbn (לדוגמה, נקבל רשימה ממוזגת עבור
עבור הניקודtf לקבלת inverted index לבסוף, עוברים על ה •
q QPT
נקבל:booksעבור
PDTיצירת ה
, prepareLists האלגוריתם עושה מעבר מיזוג יחיד על הרשימות שהכנו ב •PDTומייצר את ה
ויכיל אלמנטים וערכים (כפי descendant/ancestor ישמור על תנאי PDT ה •keywords עבור ה tf) ו preparedListsשהשגנו ב
dewey ID הרעיון המרכזי: עיבוד האלמנטים לפי סדר ה •
descendant - יעיל עבור דרישת ה
CT.MinIDPath האלמנט המתאים ל – IDהמינימלי ואבותיו הקדומים
AddCTNodeפונקציית
• Candidate tree כל צומת :cn בעץ זה מכיל מספיק מידע כדי לבדוק דרישות descendant/ancestore
•ID .מזהה ייחודי לצומת – Prefix של Dewey ID ב pathLists
•QNode הצומת התואם ב – QPT
•PL – ancestors של הצומת כך שה QNode שלהם הוא אביו של cn
•DM אם לא0 אם הוא קיים, 1 – ממפה כל בן/צאצא חובה ל
•PdtCache צאצאי – cn שמספקים את דרישת descendant אבל עדיין יש לבדוק ancestorאת דרישת ה
הלולאה הראשית באלגוריתם
חדשים ל ID’s מוסיפה •CT לפי) pathlists(
מייצרת בעזרת צמתי •CT את צמתי ה PDT
תמיד נשמר העיקרון •שכל צומת שעיבדנו וידוע שהוא צומת ב
PDT יהיה או ב ,CT או התוצאהPDTב
שלושת הצעדים בלולאה הראשית
CT ל pathlists המינימלי הבא ב IDהוספת ה 1)
שלו) מהשורש כלפי ancestor מינימלי וה ID (minIDPath ב ID’sהעתקת ה 2)PDT cache הסופי או ל PDTמטה ל
שאין להם ילדיםminIDpathמחיקת הצמתים ב 3)
1צעד
CT ל pathlists המינימלי הבא ב IDהוספת ה
2צעד
PDT ליצירת צמתי CT.minIDPathב CTשימוש בצמתי
של צאצאים המקיימים את id’s מכיל CT של צומת PDTCacheבאופן כללי, ה descendantדרישת ה
כעת נלך מהעלים לכיוון השורש, ו"נקפל" צמתים
כי אין לו ילדים והוא book 1.1, נקפל את title ואת isbn* לדוגמה, אחרי שנקפל את )year (אין לו descendantלא מקיים את דרישת
לעולם לא תמולא בעתיד descendant, דרישת dewey ID כיוון שמעבדים צמתים לפי •
התוצאה PDT של השורש, עובר ל PDT cache* כל מי שנמצא ב
3צעד
שלו PDT cache לפני שמוחקים צומת, יש להתייחס ל descendant לכן מקיימים דרישת PdtCache נמצאים ב isbn, title - לדוגמה,
ancestor - צריך לבדוק האם הם מקיימים דרישת שלהם Parent List - נבדוק את ה
. לכן אפשר להוציאן מה PDT - הצמתים הרשומים שם, ידוע לגביהם שהם לא צמתי cache
של האב PDT Cache - אחרת, נעביר את הצמתים ל
:book 1.2 - לדוגמה, הסרת
הסופיPDT שלו יועבר ל cache, כל מי שב bookכשנסיר את
ניקוד
• tf עבור כל keyword כאמור, נשמר ב ,pdt
PDT עבור כל אלמנט ב tf-idf ניתן לחשב את ערך tf בעזרת •
התוצאות הטובות ביותר, ונממש רק אותןk נחשב את •
הרחבות ואופטימיזציות
PDTCache ב descendant האלגוריתם תמיד שם את מי שממלא תנאי •
הסופיPDT, יכנס ישירות ל ancestor - ניתן לשפר את זה ע"י כך שמי שממלא גם תנאי
CT לצומת ה InPdt - לשם כך, נוסיף דגל
הסופיPDT כאשר הצומת יכנס ל 1 - נקבע את הדגל ל
InPdt = 1 הסופי כאשר לאחד מהוריהם PDT - בנים יכנסו ל
QPT יכול להתאים לכמה צמתי Dewey ID כשיש טאג-ים בשמות שחוזרים על עצמם, •
השני a, ה ”a/a/a“/ והנתיב המלא התואם הוא ”a//a“// יש QPT - לדוגמה, אם ב QPTלשני הצמתים ב מתאים
התואם, אוסף של כל QNode במקום את ה CT - כדי לפתור זאת, ניתן לשמור בצומת ו Parent List שיכולים להיות תואמים, לכל אחד מהם את ה QNodesה
DescendantMapשלו
ניסויים
500MBלשם בדיקה, השתמשו בנתונים בגודל
שלהםauthors (au) ושמו אותם מתחת ל articlesלקחו
2MB, זיכרון 3.4GHZמעבד
Windows XP
# of keywords
סיכום
וירטואליםxml views בניית מערכת אשר מבצעת חיפוש מעל •
view אלגוריתם ייחודי לשימוש במידע חלקי בלבד הרלוונטי לשאילתה ול •
מאלטרנטיבות 10 נבדק בניסוי והתגלו תוצאות מהירות ביותר מאשר פי •אחרות
!תודה רבה