1

我正在尝试使用 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 中定义为普通的 type="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 的 Web 管理界面手动添加内容,但我遇到了完全相同的问题。

4

1 回答 1

0

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

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

于 2017-10-12T13:07:16.563 回答