2013-06-18 149 views
0

我正在使用以下Groovy代碼加載存儲在MongoDB中的文件,以便在Solr中建立索引。 (我已經創建了一個包含文件內容的文件對象以及文件名):如何將數據庫中的文件加載到Solr中

ContentStreamUpdateRequest up = new ContentStreamUpdateRequest("/update/extract") 

def tempFile = new File("temp/temp-${file.name}") 
tempFile.append(file.file) //file.file references the byte[] of the file 
//append call writes the file to disk 

up.addFile(tempFile, "application/octet-stream") 

up.setParam("literal.id", file.id.toString()) 
up.setParam("literal.name", "ConsultantFile") 
up.setParam("literal.fileName_s", file.name) 
up.setParam("literal.creator_s", file.createdBy?.lastFirstName) 

up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true) 

server.request(up) //server object is the shared handle to the Solr instance 

tempFile.delete() 

所以,我已經有文件的字節數組,但我將其寫入磁盤,所以我可以使用addFile方法。然後,作爲清理,我刪除磁盤上的文件。它有效,但它很愚蠢。

我試圖取代up.addFile()的下面的代碼,但它拋出一個「非正常狀態:500消息:服務器錯誤」

def stringFile = new String(file.file, "UTF-8") 
def stream = new ContentStreamBase.StringStream(stringFile) 
up.addContentStream(stream) 

什麼是索引的文件我的最佳方式已經在內存中,而不必將其作爲中間步驟寫入磁盤?

回答

相關問題