2012-02-17 11 views
1

mysqlからsolrへの値をインポートしたいです。私はPHPスクリプトを呼び出すことによって自動インポートを行いました。mysqlからsolrへのデータの自動インポート

mysql triggerを使用しています。しかし、私は良い方法ではないことを読んだ..その他の解決策はありますか?

データを自動的にインポートしますか?誰かがplzz私を助けることができる

...

答えて

0

はまたMySQLからのあなたのデータからのインポートを支援し、それがインデックスさになるだろうSolr Data Import Handler

1

SolrのDataImportHandlerを使用することができます。
これは、Full indexと同様に、Incrementallyのデータにインデックスを付けることができます。
しかし、それは自動ではなく、スケジューラ、cronを介してデータインポートを起動する必要があります。 Schedulingにはいくつかのオプションがあります。

6

他の回答に記載されているように、この非常に良いことのためのメカニズムが組み込まれていても、このツールは非常に柔軟ではありません。インデックスを作成する前にデータマッサージを行いたいのであれば、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がある可能性があります。