2017-10-12 5 views
1

J'essaie d'ajouter des documents à Solr (5.3.2) avec pysolr. Je génère un simple objet JSON contenant un gros texte et quelques métadonnées (date, auteur ...) puis j'essaye d'ajouter ça à Solr. Mon problème est qu'au-delà d'une certaine taille, Solr ne parviendra pas à indexer le document et renvoyer l'erreur suivante:Index grand document avec Solar provoque une exception

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

Il semble vraiment être une limite hardcoded quelque part sur la longueur du champ, mais je ne peux pas trouver il.

En jouant en python j'ai découvert que:

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

fonctionnera bien en

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

provoquera une erreur.

Le champ de contenu est défini dans mon fichier schema.xml comme un type normal = champ "text_general".

Edit: Voici les définitions de 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> 

J'ai essayé d'ajouter le contenu manuellement via l'interface d'administration web de Solr, mais je reçois exactement le même problème.

+0

pouvez-vous partager votre schéma.xml pour le champ que vous essayez d'ajouter ce contenu – Mysterion

+0

a modifié mon message avec l'information schema.xml – user2969402

Répondre

0

Vous êtes probablement confronté à la limite stricte du côté du jeton unique, qui est égal à 32766. Vous ne pouvez pas modifier cette limite. Cependant, vous pouvez modifier le comportement et utiliser certains Tokenizer pour diviser votre texte d'origine dans le documenter en jetons distincts.

Par exemple, vous pouvez essayer WhitespaceTokenizer, qui séparera votre grand champ en plusieurs termes/jetons et vos documents seront indexés en toute sécurité.

+0

Il est étrange, le texte est correctement espacé, et le plus long jeton est probablement seulement 10 caractères longue. – user2969402