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

एकाधिक कीवर्ड खोज

$rows डेटा होगा जहां आपका कीवर्ड code अपनी तालिका में मेल खाता है आप दोनों कीवर्ड के मिलान के लिए अपना कोड

. के रूप में फिर से लिख सकते हैं
$keyword = 'hello code';
$exloded = explode(' ', $keyword);
$query = 'SELECT * FROM A ';
$i = 0;
$params = array();
foreach ($exploded as $value):
    if ($i == 0) {
        $query .= ' WHERE `text` LIKE :value_'.$i;
    } else {
        $query .= ' OR `text` LIKE :value_'.$i;
    }
    $params[':value_'.$i] = '%'.$value .'%';
    $i++;
endforeach;
$sth = $db->query($query);
$sth->execute($params);
$rows = $sth->fetchAll();
echo '<pre>';print_r($rows);echo '</pre>';
';

लूप में अपनी क्वेरी बनाएं (आपके द्वारा प्रदान किए गए कीवर्ड पर) और सभी मानों के मिलान के लिए अद्वितीय प्लेसहोल्डर्स को क्वेरी में असाइन करें

संपूर्ण पाठ खोज के लिए संपादित करें

पूर्ण पाठ खोज का उपयोग करके आप प्रदान किए गए कीवर्ड के साथ ठीक उसी वाक्यांश का मिलान कर सकते हैं, पूर्ण पाठ खोज के साथ काम करने के लिए आपको FULLTEXT प्रकार की अनुक्रमणिका की आवश्यकता होती है ।

ALTER TABLE `A` ADD FULLTEXT INDEX `fulltextindex` (`text`); 

और क्वेरी इस तरह होगी

$keyword = 'hello code';
$exloded = explode(' ', $keyword);
$where = '';
$i = 0;
$select = array();
$params = array();

foreach ($exploded as $value):
    $select[]= ' MATCH(`text`) AGAINST(:value_'.$i.' IN BOOLEAN MODE) ';
    if ($i == 0) {
        $where  .= ' WHERE MATCH(`text`) AGAINST(:value_'.$i.' IN BOOLEAN MODE)';
    } else {
        $where  .= ' OR MATCH(`text`) AGAINST(:value_'.$i.' IN BOOLEAN MODE)';
    }
    $params[':value_'.$i] =  $value ;
    $i++;
endforeach;

$query ='SELECT *,'. implode( ' + ',$select).' AS score FROM A '.$where.' ORDER BY score DESC';
$sth = $db->query($query);
$sth->execute($params);
$rows = $sth->fetchAll();
echo '<pre>';print_r($rows);echo '</pre>';
';

उपरोक्त कोड

. जैसी क्वेरी उत्पन्न करेगा
SELECT *,
MATCH(`text`) AGAINST('hello' IN BOOLEAN MODE)
+ 
MATCH(`text`) AGAINST('code' IN BOOLEAN MODE) AS score
FROM A 
WHERE MATCH(`text`) AGAINST('hello' IN BOOLEAN MODE)
OR  MATCH(`text`) AGAINST('code' IN BOOLEAN MODE)
ORDER BY score DESC

उपनाम score उपरोक्त क्वेरी में प्रत्येक पंक्ति और उसके मिलान किए गए स्कोर के लिए मूल्य होगा, इस प्रकार आप अपने परिणाम को सबसे पहले रिकॉर्ड दिखाने के लिए अवरोही तरीके से ऑर्डर कर सकते हैं जिसमें उच्चतम स्कोर है।



  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 पंक्ति क्रम क्या है * table_name से;?

  2. ActiveRecord समूह की गिनती शून्य के साथ होती है

  3. क्या मुझे query_cache_size के लिए जगह बनाने के लिए अपने innodb_buufer_pool _size/RAM का त्याग करना चाहिए?

  4. मौजूदा तालिका में प्रत्येक शब्द के पहले अक्षर को बड़ा करें

  5. कॉलम में कई वर्षों के लिए बिक्री का योग प्राप्त करें