2015-10-16 53 views
0

據我所知,在SimplePostTool(post.jar)中,有這個命令可以自動檢測文件夾中的內容類型,並遞歸掃描文件索引到一個集合中:
bin/post -c gettingstarted afolder/遞歸掃描SolrJ文件夾索引文件

這對於我對文件夾中的所有文件進行大量索引是非常有用的。現在我正在轉向生產並計劃使用SolrJ來執行索引,因爲它可以執行更多的功能,如健壯性檢查和對失敗索引的退役。

但是,我似乎無法找到一種方法來在SolrJ中做同樣的事情。 SolrJ可以做到這一點嗎?我正在使用Solr 5.3.0

謝謝。

問候,
埃德溫

回答

1

如果您正在尋找內容提交到提取請求處理程序(用於索引PDF文件和類似的豐富的文檔),您可以使用ContentStreamUpdateRequest方法在Uploading data with SolrJ所示:

SolrClient server = new HttpSolrClient("http://localhost:8983/solr/my_collection"); 
ContentStreamUpdateRequest req = new ContentStreamUpdateRequest("/update/extract"); 
req.addFile(new File("my-file.pdf")); 
server.request(req); 

要在Java中遞歸地遍歷目錄結構,請參閱Best way to iterate through a directory in Java

如果您打算爲普通內容編制索引(而不是使用請求處理程序),您可以通過在SolrJ本身創建文檔然後將文檔提交給服務器來完成此操作 - 無需將它們寫入到臨時文件在兩者之間。

+0

謝謝MatsLindh。是的,這工作。但是,如果文件名中有非英文字符(例如:中文),你知道該怎麼辦嗎?目前,它被看作是一系列'???'。 –

+0

@EdwinYeo您可能需要做一些工作,將其轉換爲適當的unicode,具體取決於基礎文件系統:請參閱http://stackoverflow.com/questions/3072376/how-can-i-open-files-containing-accents -in-java尋找可能的解決方案 - 但它似乎是一個可能由代碼中的許多不同級別引起的問題。 – MatsLindh

+0

謝謝。我已經設法讓它讀取Eclipse中的中文字符。但是,當我使用UTF-8編碼的URLEncoder將Solr中的中文字符索引爲索引時,它將索引爲「%E7%AB%8B%E9」而不是中文字符。原因是什麼? –