2015-10-04 74 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字段中放入大量的文本文件。 –

相关问题