在Solr中,"文本"字段的最大大小是多少?

Nic*_*zza 5 solr

在您的应用中使用Solr客户端时,text多行字段的最大大小是多少?

我可以将巨大的xml文档作为文本发送吗?

例如

SolrInputDocument document = new SolrInputDocument();
document.addField("id", rec.getId());
document.addField("hugeTextFile_txt", hugeTextFile);        
UpdateResponse response = solr.add(document);
solr.commit();  
Run Code Online (Sandbox Code Playgroud)

You*_*bit 10

更新

我使用textfieldType进行了相同的单元测试.以下是我使用的声明.请注意,我已从声明中删除了分析器部分.

<fieldType name="text" class="solr.TextField"/>
Run Code Online (Sandbox Code Playgroud)

我能够添加500,000,000个字符并成功编入索引.对于更高的值,我得到了Java heap space错误,这与solr无关.


我尝试通过向字段添加大值来执行简单测试.我发现的限制是32,766字节.之后,它抛出IllegalArgumentException.在fieldTypeemailstring.

<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
Run Code Online (Sandbox Code Playgroud)

@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();
}
Run Code Online (Sandbox Code Playgroud)

上面抛出的32767以上的异常:

引起:java.lang.IllegalArgumentException:Document在field ="email"中包含至少一个巨大的术语(其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

我希望这会有所帮助.

  • ..但是`string`字段与`text`字段不同.如果有的话你可能已经找到了一个令牌的限制. (4认同)