Mysql
 sql >> база данни >  >> RDS >> Mysql

Автоматично импортиране на данни от mysql към solr

Въпреки че има вграден механизъм за точно това нещо, Data Import Handler (DIH) , както беше споменато в другите отговори, намерих този инструмент за не много гъвкав. Това, което имам предвид с това е, че ако исках да направя някакво масиране на данни преди индексиране, можех да разчитам само на MySQL функции, когато можех да използвам PHP функции.

В крайна сметка написах моя собствен Handler за импортиране на данни като PHP скрипт, където той изпълнява първоначалната заявка, след което преминава през резултатите и масажира (и кешира) данните при вмъкване в SOLR индекса. Не беше твърде сложно и щеше да изглежда нещо като (само демонстративно):

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.

API, който използвам за достъп до SOLR чрез PHP, е 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. изтрийте запис от две таблици в php/mysql

  2. Mysql Изберете втори ред

  3. Най-добрият начин за вмъкване на JSON данни в MYSQL

  4. инсталирайте mysql 5.7 чисто от bash скрипт на Ubuntu

  5. Висока цифрова прецизност плава с MySQL и SQLAlchemy ORM