我正在尝试使用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的网络管理界面手动添加内容,但我遇到了完全相同的问题。
答案 0 :(得分:0)
您很可能面临单一令牌方面的硬限制,等于32766.您无法更改此限制,但是,您可以更改行为并使用某些Tokenizer进行拆分将原始文本中的文档分成单独的标记。
例如,您可以尝试使用WhitespaceTokenizer,它会以多个术语/标记分隔您的大字段,并且您的文档将被安全地编入索引。