Автоматический импорт данных из mysql в solr - PullRequest
1 голос
/ 17 февраля 2012

Я хочу импортировать значения из mysql в solr. Я сделал автоматический импорт, вызвав скрипт php

, используя триггер mysql.Но я читал, что это не очень хороший метод. Есть ли другое решение для

автоматического импорта данных?

Может кто-нибудь помочь мне, plzz ...

Ответы [ 3 ]

6 голосов
/ 17 февраля 2012

Несмотря на то, что для этой самой вещи есть встроенный механизм, Data Import Handler (DIH), как упоминалось в других ответах, я нашел этот инструмент не очень гибким.Под этим я подразумеваю, что если бы я хотел выполнить какое-либо массирование данных перед индексацией, я мог зависеть только от функций MySQL, когда я мог бы использовать функции PHP.

В итоге я написал свой собственный обработчик импорта данных какСкрипт 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 , могут быть и другие, так что гуглите вокруг.

1 голос
/ 17 февраля 2012

Solr DataImportHandler поможет вам импортировать данные из mysql и индексировать их.
Он предоставляет возможность Полный индекс , а также Пошаговое индексирование данных.
Однако это не будет автоматическим, и вам нужно запустить импорт данных через планировщик cron. Есть несколько опций, над которыми работаем для Планирование it.

0 голосов
/ 17 февраля 2012

Вы также можете использовать обработчик импорта данных Solr

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...