2012-02-17 67 views
1

我想从mysql导入值到solr ..我通过调用php脚本自动导入从mysql自动导入数据到solr

使用mysql触发器。但我读了它不是一个好方法..是否有

自动将数据导入任何其他解决方案?

有人可以帮助我plzz ...

回答

6

即使有一个内置的机制,这事,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无法做的事情。

我通过PHP使用访问SOLR的API是solr-php-client,有可能是其他人在那里,因此谷歌左右。