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

mysql से solr में डेटा का ऑटो आयात करना

भले ही इस चीज़ के लिए एक अंतर्निहित तंत्र है, Data Import Handler (DIH) , जैसा कि अन्य प्रतिक्रियाओं में उल्लेख किया गया है, मैंने पाया कि यह उपकरण बहुत लचीला नहीं है। इससे मेरा मतलब यह है कि, अगर मैं अनुक्रमण से पहले कोई डेटा मालिश करना चाहता था, तो मैं केवल MySQL फ़ंक्शंस पर निर्भर हो सकता था, जब मैं PHP फ़ंक्शंस का उपयोग कर सकता था।

मैंने अपना खुद का डेटा आयात हैंडलर एक PHP स्क्रिप्ट के रूप में लिखना समाप्त कर दिया, जहां यह प्रारंभिक क्वेरी करता है, फिर एसओएलआर इंडेक्स में डालने पर परिणामों और मालिश (और कैश) डेटा के माध्यम से कदम उठाता है। यह बहुत जटिल नहीं था, और कुछ इस तरह दिखेगा (केवल प्रदर्शनकारी):

SELECT 
  book.id AS book_id,
  book.name AS book_name,
  GROUP_CONCAT(DISTINCT author.name) AS authors
FROM
  book
INNER JOIN
  link_book_author AS alink ON alink.book_id = book.id
INNER JOIN
  author ON author.id = alink.author_id
GROUP BY
  book.id;

$stmt = $dbo->prepare($sql);

$stmt->execute();

while ($row = $stmt->fetch(PDO::FETCH_OBJ)) {

    try {

        $document = new Apache_Solr_Document();

        $document->Id = $row->book_id;
        $document->BookName = $row->book_name;

        $document->Author = explode(',' $row->author);

        $this->getSearchEngineInstance()->addDocument($document);

    } catch (Exception $e) {

        error_log(sprintf('Unable to add document to index: (%s)', $e->getMessage());
    }
}

यह सिर्फ एक उदाहरण है कि आप क्या कर सकते हैं, मेरी स्थिति में जब मैं पूर्ण आयात करता हूं तो मैं प्रदर्शन बढ़ाने के लिए कैशिंग भी शामिल करता हूं। कुछ ऐसा जो आप देशी DIH का उपयोग करके नहीं कर सकते।

PHP के माध्यम से SOLR तक पहुँचने के लिए मैं जिस API का उपयोग करता हूँ वह है solr-php-client , वहाँ अन्य लोग भी हो सकते हैं, इसलिए Google पर नज़र रखें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैसकल:नाम बदलें तालिका यदि मौजूद है

  2. मौजूदा पंक्तियों को साफ़ किए बिना बटन क्लिक करते समय डेटाबेस से jTable में नई पंक्तियां कैसे जोड़ें

  3. प्लगइन '0' लोड नहीं है

  4. Mysql डीबी में बड़ी संख्या में संग्रहित करने में समस्या

  5. PDOException "ड्राइवर नहीं मिल सका"