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

कई तालिकाओं में mySQL मैच

  • आप MySQL में एकाधिक तालिकाओं में पूर्ण टेक्स्ट इंडेक्स (या किसी भी प्रकार की अनुक्रमणिका) को परिभाषित नहीं कर सकते हैं। प्रत्येक अनुक्रमणिका परिभाषा बिल्कुल एक तालिका का संदर्भ देती है। किसी दिए गए फुलटेक्स्ट इंडेक्स के सभी कॉलम एक ही टेबल के होने चाहिए।

  • MATCH() . के तर्क के रूप में नामित कॉलम फ़ंक्शन एक पूर्ण टेक्स्ट इंडेक्स का हिस्सा होना चाहिए। आप MATCH() . के लिए एक भी कॉल का उपयोग नहीं कर सकते हैं उन सभी स्तंभों को खोजने के लिए जो आपके डेटाबेस में सभी पूर्ण-पाठ अनुक्रमणिका का हिस्सा हैं।

  • फुलटेक्स्ट इंडेक्स केवल इंडेक्स कॉलम CHAR के साथ परिभाषित किया गया है , VARCHAR , और TEXT डेटाटाइप।

  • आप प्रत्येक तालिका में एक पूर्ण पाठ अनुक्रमणिका परिभाषित कर सकते हैं।

उदाहरण:

CREATE TABLE categories (
  id SERIAL PRIMARY KEY,
  name VARCHAR(100),
  FULLTEXT INDEX ftcat (name)
);

CREATE TABLE host_types (
  id SERIAL PRIMARY KEY,
  category_id BIGINT UNSIGNED,
  name VARCHAR(100),
  FULLTEXT INDEX ftht (name)
);

CREATE TABLE hosts (
  id SERIAL PRIMARY KEY,
  host_id BIGINT UNSIGNED,
  category_id BIGINT UNSIGNED,
  name VARCHAR(100),
  FULLTEXT INDEX fthost (name)
);

CREATE TABLE products (
  id SERIAL PRIMARY KEY,
  name VARCHAR(100),
  keywords VARCHAR(100),
  uid VARCHAR(100),
  description VARCHAR(100),
  quantity INTEGER,
  price NUMERIC(9,2),
  host_id BIGINT UNSIGNED,
  FULLTEXT INDEX ftprod (name, keywords, description, uid)
);

और फिर आप एक क्वेरी लिख सकते हैं जो प्रत्येक संबंधित पूर्ण-पाठ अनुक्रमणिका का उपयोग करती है:

SELECT ...
  MATCH(categories.name) AGAINST('search term') as cscore, 
  MATCH(host_types.name) AGAINST('search term') as htscore,
  MATCH(hosts.name) AGAINST('search term') as hscore,
  MATCH(products.name, products.keywords, products.description, products.uid)
    AGAINST('search term') as score
FROM products
LEFT JOIN hosts ON products.host_id = hosts.id
LEFT JOIN host_types ON hosts.host_id = host_types.id
LEFT JOIN categories ON host_types.category_id = categories.id
WHERE
  MATCH(categories.name) AGAINST('search term') OR
  MATCH(host_types.name) AGAINST('search term') OR
  MATCH(hosts.name) AGAINST('search term') OR
  MATCH(products.name, products.keywords, products.description, products.uid)
    AGAINST('search term')
ORDER BY score DESC;


  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. MySQL में SQL सर्वर ELT () के समतुल्य क्या है?

  4. MySQL जॉइन NULL फ़ील्ड लौटाता है

  5. MySQL में अनुक्रमिक संख्या डालें