我想从mysql导入值到solr ..我通过调用php脚本自动导入从mysql自动导入数据到solr
使用mysql触发器。但我读了它不是一个好方法..是否有
自动将数据导入任何其他解决方案?
有人可以帮助我plzz ...
我想从mysql导入值到solr ..我通过调用php脚本自动导入从mysql自动导入数据到solr
使用mysql触发器。但我读了它不是一个好方法..是否有
自动将数据导入任何其他解决方案?
有人可以帮助我plzz ...
您也可以使用Solr Data Import Handler
Solr的DataImportHandler会帮助你从数据导入从MySQL得到它索引。
它提供能力Full index和以及Incrementally索引的数据。
但是,它不会是自动的,你需要通过调度引发的数据导入,cron的。 它有一些选项正在为Scheduling工作。
即使有一个内置的机制,这事,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,有可能是其他人在那里,因此谷歌左右。