לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 15-10-2009, 15:59
  CallMeYossi CallMeYossi אינו מחובר  
 
חבר מתאריך: 15.10.09
הודעות: 10
הכוונה לצמצום שאילתא ושיטת FULLTEXT

שלום,
בפרוייקט שבו אני עוסק כעת נתקלתי בצורך לבצע חיפוש.

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

שנית, בחיפוש בפרוייקט הזה יש צורך לחפש בכמה טבלאות בו זמנית, כל טבלה מכילה שדות שונים שצריך להציג. אני מעוניין להציג את כל התוצאות ברשימה אחת מסודרת עפ"י בחירת המשתמש. לצערי אני לא מצליח לחשוב על דרך שבה אוכל לעשות זאת ב-SQL.
כדי שתבינו יותר טוב על מה אני מדבר, הנה דוגמא קצרה שהכנתי ב-PHP לרעיון הבסיסי בצורה בזבזנית.
במקרה הזה המשתמש ביקש לחפש רק ב-2 טבלאות ולסדר את הפריטים עפ"י תאריך:
קוד PHP:
<?php
$data 
$orderlist $result = array();
$q mysql_query("SELECT field1, field2, timestamp FROM tbl1 WHERE condition");
while(
$r mysql_fetch_assoc($q)){
$r['search_result_type'] = 'tbl1';
$data[] = $r;
$orderlist[] = $r['timestamp'];
}
$q mysql_query("SELECT otherfield, otherfield, timestamp FROM tbl2 WHERE condition");
while(
$r mysql_fetch_assoc($q)){
$r['search_result_type'] = 'tbl2';
$data[] = $r;
$orderlist[] = $r['timestamp'];
}
asort($orderlist);
foreach(
array_keys($orderlist) as $k)
$result[] = $r[$k];

כמו שניתן לראות יש פה שימוש ב-2 שאילתות וב-2 לולאות לאיסוף המידע.
במידה והמשתמש ירצה לחפש בכל טבלאות הפרוייקט, ישנה אפשרות שהעמוד יגיע למעל 15 שאילתות ו-15 לולאות רק בחיפוש! השיטה הזו נראית לי מאוד בזבזנית.
אשמח לקבל הכוונה ועיצות מיודעים בדבר.
תודה רבה!
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 15-10-2009, 21:20
  CallMeYossi CallMeYossi אינו מחובר  
 
חבר מתאריך: 15.10.09
הודעות: 10
בתגובה להודעה מספר 2 שנכתבה על ידי טוארג שמתחילה ב "1. יישום ה fulltext תלוי בסוג..."

1. שכחתי לציין, אני משתמש ב-MySQL התומכת ב-FULLTEXT.
לפי הדוקומנטציה שלהם, יש להפוך את העמודות שבהם אני מעוניין לתמוך ב-FULLTEXT לסוג זה וכך המסד יכול לאנדקס את התוצאות. אבל יש בעיה אפשרית שאני חושב עליה כעת, במידה ויש מילים ספציפיות שאני מעדיף לא לאנדקס? כמו מילות קישור למשל. ישנה דרך למנוע איסוף של מילים נוספות?כמו כן לפי מה שהצלחתי להבין, בצורה הזו יש אפשרות לבחור מבין כמה טבלאות מה שחוסך לי את השאלה השניה.
האם הדרך הזו יעילה יותר מהדרך הרגילה מבחינת מהירות יעילות ונכונות החיפוש?

2. חשבתי על UNION אך לא לכל הטבלאות יש את אותן העמודות גם מבחינת מספר העמודות וגם מבחינת השם. המטרה שלי בסופו של דבר היא להוריד את מספר השאילתות ובכך לייעל את החיפוש ולהוריד את זמן החיפוש.

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

תודה רבה לך!
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 16-10-2009, 14:16
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,775
בתגובה להודעה מספר 7 שנכתבה על ידי CallMeYossi שמתחילה ב "לא בדיוק הבנתי את הבקשה..."

הוא מתכוון ל: "מה אתה מנסה לעשות, שאתה מבצע חיפוש על מילה ב 15 טבלאות שונות?"

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

במילים אחרות - תסביר מה המערכת שלך עושה, ולמה חילקת ככה. אלא אם כן "אין ברירה" ו"ככה הוחלט", ו"זה המוצר" - ואז במקרה הזה, התשובה תהיה אותה תשובה שתמיד נותנים על מערכת שתוכננה באופן לא יעיל, והיא: "זה המוצר, ככה הוחלט, אין ברירה, אתה צריך לעשות 15 שאילתות או המקבילה להן..."
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 22:36

הדף נוצר ב 0.07 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר