Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

विभिन्न क्षेत्रों के साथ कई तालिकाओं पर MySQL पूर्ण पाठ खोज

मैं इस मुद्दे पर कई प्रकार की सामग्री (मूवी डेटाबेस) वाली वेबसाइट पर एक खोज का निर्माण कर रहा था। मैं चाहता था कि उपयोगकर्ता एक खोज कर सके और अभिनेता, फिल्म या चरित्र का नाम ढूंढ सके।

एक बड़ा SQL कथन प्राप्त करने का प्रयास करने के बजाय, मैंने प्रत्येक प्रकार की सामग्री (मूवी_टाइटल, मूवी_प्लॉट, अभिनेता_नाम, वर्ण_नाम, आदि) के लिए एक मैच किया और पंक्ति की आईडी, सामग्री का प्रकार और मैच का स्कोर चिपका दिया। एक बहुआयामी सरणी में। मैं आमतौर पर प्रत्येक सामग्री प्रकार को शीर्ष 50 मैचों तक सीमित रखता हूं।

मैं तब स्कोर के आधार पर सरणी को सॉर्ट करने में सक्षम था। फिर मैं प्रत्येक परिणाम के लिए आवश्यक जानकारी देखने के लिए आईडी और सामग्री प्रकार का उपयोग करूंगा।

संपादित करें (कोड जोड़ना)

अस्वीकरण:यह पुराना कोड है, और इसे करने के शायद अधिक कुशल तरीके हैं

$topResults = array();
$topResults[0] = array('nil', 'nil', 0);

$movieFound = 0;
$plotFound = 0;
$actorFound = 0;
$characterFound = 0;

// example of movie title... follow the same procedure for the others
$sql = "SELECT movies.Movie_ID as mid, MATCH (Movie_Title) AGAINST ('$searchstring') AS Score FROM movies, Rating_Movie_Relationships WHERE MATCH (Movie_Title) AGAINST ('$searchstring') AND Front_Image_File IS NOT NULL AND movies.Movie_ID = Rating_Movie_Relationships.Movie_ID $sqlwhere ORDER BY Score DESC LIMIT 0, 20";
$result = @mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
    for ($i = 0; $i < count($topResults);$i++){
        if ($row['Score'] > $topResults[$i][2]){
            for ($j = count($topResults); $j > $i; $j--){
                $topResults[$j] = $topResults[$j-1];
            }
            $topResults[$i] = array($row['mid'], 'm', $row['Score'] - $movieWeight);
            break;
        }
    }
    $movieFound = 1;
}

//.... add the other content types here following the movie title example

for ($i = 0; $i < count($topResults); $i++){
    if ($topResults[$i][1] == 'm'){
        if ($countMovies < $limit) {
            $movieTitleDivText .= str_replace('\'','&#39;',createPersonMovieImageLink($topResults[$i][0]));
            $countMovies++;
        }
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL आयात - लाइन मौजूद होने पर ड्रॉप टेबल को कैसे अनदेखा करें?

  2. Mysql में क्रमबद्ध सरणी अपडेट कर रहा है (बिना क्रमबद्ध किए?)

  3. सर्वलेट से डेटा एक्सेस करना

  4. $wpdb-> काम नहीं कर रहा डालें। कोई त्रुटि नहीं Msg

  5. नया EntityManager कभी-कभी MySQL से पुराना डेटा प्राप्त करता है