2015-10-04 100 views
3

在您的應用中使用Solr客戶端時,text多行字段的最大大小是多少?在Solr中,「文本」字段的最大大小是多少?

我可以發送巨大的XML文件作爲文本?

E.g.

SolrInputDocument document = new SolrInputDocument(); 
document.addField("id", rec.getId()); 
document.addField("hugeTextFile_txt", hugeTextFile);   
UpdateResponse response = solr.add(document); 
solr.commit(); 
+0

是什麼驅動您需要將大量XML文檔發送到Solr?他們會被索引爲可搜索性,或只是存儲並返回結果? – STW

+0

答案中有更新,我之前發佈。請檢查。 – YoungHobbit

+0

你使用的是哪個版本?在Solr 3和4之間對此進行了改變。 – cheffe

回答

9

更新

我使用利用text字段類型相同的單元測試。以下是我使用的聲明。請注意,我從宣言中刪除了分析儀部分。

<fieldType name="text" class="solr.TextField"/> 

我是能夠成功地添加5億字符並建立索引。對於較高的值,我得到Java heap space錯誤,這與solr無關。


我試圖通過向字段添加一個大的值來執行一個簡單的測試。我發現的限制是32,766字節。之後它投擲IllegalArgumentException。 的fieldTypestring

<fieldType name="string" class="solr.StrField" sortMissingLast="true" /> 

@Test 
public void test() throws IOException, SolrServerException { 
    SolrInputDocument document = new SolrInputDocument(); 
    document.addField("profileId", TestConstants.PROFILE_ID); 
    StringBuilder builder = new StringBuilder(); 
    for (int i = 0; i<32767; i++) { 
    builder.append((char)((i%26)+'a')); 
    } 
    document.addField("email", builder.toString()); 
    solrClient.add(document); 
    solrClient.commit(); 
} 

異常通過上述用於32767和更拋出:

引起:java.lang.IllegalArgumentException異常:文檔包含=「電子郵件字段中的至少一個巨大術語「(其UTF8編碼比最大長度32766長),所有這些都被跳過。請糾正分析儀不要產生這些條款。第一個巨大術語的前綴是:'[97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116 ,117,118,119,120,121,122,97,98,99,100] ...',原始消息:字節長度最多可以是32766;;得到32767

我希望這會有所幫助。

+3

..但是'string'字段與'text'字段不同。如果有的話你可能已經找到了單個令牌的限制。 – MatsLindh

+0

@MatsLindh你是對的。我已將我的發現添加到「文本」中,請檢查。感謝您的反饋。 – YoungHobbit

+0

非常感謝這個答案。正如所宣稱的,我運行得很好,在txt動態solr字段中放入大量的文本文件。 –

相關問題