2014-03-03 74 views
2

背景: 我正在使用Solr 4.0來索引Oracle 11g數據庫。我使用wget和Solaris/UNIX crontab中的HTTP data-import命令(http://wiki.apache.org/solr/DataImportHandler)啓動導入。而不是delta導入,在我的數據配置查詢數據庫中,我使用的是通過全導入的delta查詢(http://wiki.apache.org/solr/DataImportHandlerDeltaQueryViaFullImport)。這種做法可以區分使用clean = true和clean = false的完整導入和delta查詢。這是必要的,因爲生成我索引的數據的應用程序。Solr DataImportHandler清除索引

問題: 當我從瀏覽器(Firefox)獲取Http時,通過完全導入的查詢,完全導入和delta查詢都正常工作。但是,當我使用crontab/wget發出EXACT相同的url命令時,索引以0(零!)文件結束。這隻發生在我通過完全導入進行delta查詢時 - 完全導入正常工作。由於完整導入可能需要超過24小時,因此我必須對索引進行增量更新。整個指數如何可以從進口中清除?整個索引被刪除?怎麼樣?爲什麼?如果通過完全導入的增量查詢在Firefox中正常工作,然後在cron/wget發出Get請求時刪除整個索引是沒有意義的。

想法?

+0

你使用'clean = false'嗎?無論何時'command = full-import'' clean = true'都是默認的,這意味着它將在開始時運行一個刪除查詢。 – arun

+0

還要確保在crontab中輸入帶有引號的完整更新URL。否則''後面的任何參數都會被shell解析出來,這可能意味着只有第一個參數創建了它。 – arun

+0

行情奏效。我不敢相信這是一個簡單的問題!如果你把它寫成答案,我會接受它。 – DarkerIvy

回答

2

你使用的是clean=false嗎?每當command=full-importclean=true是默認的,這意味着它將在開始時運行刪除查詢。

此外,請確保您在crontab中使用引號引入了帶有參數的完整更新URL。否則&之後的任何參數都將被shell解析出來,這可能意味着只有第一個參數創建了它。

+0

在Solaris crontab中,我發現轉義工作正常。現在我的crontab是這樣的:'0 12 * * */usr/sfw/bin/wget http:// server:8080/solr/corp_name/dataimport \?command \ = full-import \&clean \ = false' – DarkerIvy