mysqlからsolrへの値をインポートしたいです。私はPHPスクリプトを呼び出すことによって自動インポートを行いました。mysqlからsolrへのデータの自動インポート
mysql triggerを使用しています。しかし、私は良い方法ではないことを読んだ..その他の解決策はありますか?
データを自動的にインポートしますか?誰かがplzz私を助けることができる
...
mysqlからsolrへの値をインポートしたいです。私はPHPスクリプトを呼び出すことによって自動インポートを行いました。mysqlからsolrへのデータの自動インポート
mysql triggerを使用しています。しかし、私は良い方法ではないことを読んだ..その他の解決策はありますか?
データを自動的にインポートしますか?誰かがplzz私を助けることができる
...
はまたMySQLからのあなたのデータからのインポートを支援し、それがインデックスさになるだろうSolr Data Import Handler
SolrのDataImportHandlerを使用することができます。
これは、Full indexと同様に、Incrementallyのデータにインデックスを付けることができます。
しかし、それは自動ではなく、スケジューラ、cronを介してデータインポートを起動する必要があります。 Schedulingにはいくつかのオプションがあります。
他の回答に記載されているように、この非常に良いことのためのメカニズムが組み込まれていても、このツールは非常に柔軟ではありません。インデックスを作成する前にデータマッサージを行いたいのであれば、PHP関数を使用することができたときだけ、MySQL関数に依存することができます。
私は自分のデータインポートハンドラを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を使用して行うことはできません。
PHPでSOLRにアクセスするために使用するAPIはsolr-php-clientです。そこには他にもgoogleがある可能性があります。