【问题标题】:In Solr, what is the maximum size of a "text" field?在 Solr 中,“文本”字段的最大大小是多少?
【发布时间】:2015-10-04 17:38:43
【问题描述】:

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

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

例如

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

【问题讨论】:

  • 是什么促使您需要将大量 XML 文档发送到 Solr?它们会被索引以供搜索,还是只是存储并与结果一起返回?
  • 我之前发布的答案中有更新。请检查。
  • 您使用的是哪个版本?在 Solr 3 和 4 之间,这一点发生了变化。
  • 创建此票证时来自 solr 网站的最新 4 个。

标签: solr


【解决方案1】:

更新

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

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

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


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

<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:文档在 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 字段不同。如果有的话,您可能已经发现了单个令牌的限制。
  • @MatsLindh 你是对的。我已将我的发现添加到 text,请检查。感谢您的反馈。
  • 非常感谢您的回答。正如所宣传的那样,我将相当大的文本文件放入 txt 动态 solr 字段中运行得很好。
  • 几乎正好是 32KiB,减去字节来表示 UTF-16 的 BOM
【解决方案2】:

将 solr 字段更改为“text_general”并更新 solr 架构有帮助

更新 solr 架构的命令:

solrctl instancedir --update "包含带有已编辑 solr 字段的架构文件的目录"

solrctl 集合 --update "要更新的集合名称"

【讨论】:

    猜你喜欢
    • 2017-04-26
    • 2012-01-01
    • 2021-04-27
    • 1970-01-01
    • 2015-05-04
    • 2013-02-26
    • 2012-06-30
    • 2011-03-13
    • 1970-01-01
    相关资源
    最近更新 更多