View Single Post
ישן 27-02-15, 19:01   # 8
Haimz
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Sep 2010
הודעות: 1,221

Haimz לא מחובר  

לדעתי אפשרי לאתר מוצרים דומים באמצעות המילים,
לדוגמה: "משקולת עגולה גדולה 2 ק"ג" (נקרא לזה מחרוזת ראשונה) ו "משקולת עגולה גדולה 3 ק"ג" (נקרא לזה מחרוזת שנייה):
אז דבר ראשון, נפריד את המילים של המחרוזת הראשונה באמצעות רווח,
לאחר מכן, תחפש עבור כל מילה בנפרד אם היא קיימת בעמודות של המסד (במקרה הזה המחרוזת השנייה), ובמידה וכן אז תציג אותה.

זאת אומרת שאחרי הפרדה של המילים, יהיה לך מערך כזה: "משקולת" , "עגולה" , "גדולה" , "2" "ק"ג"
ואחרי הבדיקה במחרוזת השנייה, אמורה להיות לך תאימות עם כל המילים חוץ מ"3".

קוד לדוגמה, (לא בדקתי אבל אני מניח שיעבוד ואם לא, אז זה העקרון) - שים לב שזה לא מאובטח:
PHP קוד:
<?php
    $name 
"משקולת עגולה גדולה 2 ק\"ג"//a המחרוזת הראשונה
    
$name explode(" "$name); // ההפרדה של המילים
    
    
if( count($name) > // מחפש במידה ויש לפחות מילה אחת במחרוזת
    
{
        
$searchString = array(); // כאן יהיה הביטוי חיפוש
        
foreach($name as $k => $v// עובר על כל המילים
        
{
            
$searchString[] = " name LIKE '%".$v."%' "// מעדכן את הביטוי חיפוש בכל פעם עם כל מילה
        
}
    
        
$search mysql_query("SELECT columns FROM table WHERE ".implode(" OR "$searchString).""); // שאילתת החיפוש
    
}
?>
רעיון נוסף: במקום להפריד כל פעם מילה אחת, אפשר להפריד שתי מילים בכל פעם וככה להקטין את כמות התוצאות אבל להגדיל את התאימות בין המוצרים.
  Reply With Quote