使用Solar索引大型文档会导致异常

时间:2017-10-12 09:20:31

标签: python search indexing solr pysolr

我正在尝试使用pysolr向Solr(5.3.2)添加文档。 我生成一个包含大文本和一些元数据(日期,作者...)的简单JSON对象,然后我尝试将其添加到Solr。 我的问题是,超过一定的大小,Solr将无法索引文档并返回以下错误:

Solr responded with an error (HTTP 400): [Reason: Exception writing document id e2699f18-ab5f-47f6-a450-60db5621879c to the index; possible analysis error.]

在场地长度上似乎确实存在硬编码限制,但我无法找到它。

通过在python中玩游戏我发现:

default_obj['content'] = content[:13260]

将正常工作

default_obj['content'] = content[:13261]

会导致错误。

内容字段在我的schema.xml中定义为普通类型=" text_general"字段。

编辑:以下是schema.xml定义

<field name="content" type="text_general" indexed="true" stored="true" multiValued="true"/>


<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

我尝试通过Solr的网络管理界面手动添加内容,但我遇到了完全相同的问题。

1 个答案:

答案 0 :(得分:0)

您很可能面临单一令牌方面的硬限制,等于32766.您无法更改此限制,但是,您可以更改行为并使用某些Tokenizer进行拆分将原始文本中的文档分成单独的标记。

例如,您可以尝试使用WhitespaceTokenizer,它会以多个术语/标记分隔您的大字段,并且您的文档将被安全地编入索引。