我想從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,有可能是其他人在那裏,因此谷歌左右。