更新
我使用利用text
字段类型相同的单元测试。以下是我使用的声明。请注意,我从宣言中删除了分析仪部分。
<fieldType name="text" class="solr.TextField"/>
我是能够成功地添加5亿字符并建立索引。对于较高的值,我得到Java heap space
错误,这与solr无关。
我试图通过向字段添加一个大的值来执行一个简单的测试。我发现的限制是32,766字节。之后它投掷IllegalArgumentException
。 的fieldType
是string
。
<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
我希望这会有所帮助。
是什么驱动您需要将大量XML文档发送到Solr?他们会被索引为可搜索性,或只是存储并返回结果? – STW
答案中有更新,我之前发布。请检查。 – YoungHobbit
你使用的是哪个版本?在Solr 3和4之间对此进行了改变。 – cheffe