web-dev-qa-db-fra.com

Solr "Texte de champ non défini"

J'ai récemment mis à niveau mon instance solr de 1,4 à 3,6. Cependant, il semble maintenant que j'obtienne un message grave "texte de champ non défini" dans mes journaux chaque fois que je mets à jour mon index.

J'ai des champs de texte dans mon schéma (qui était valide à partir de la version 1.4), mais je n'avais jamais dû être déclaré comme type de champ auparavant. Cela a-t-il changé en 3.6?

Mon schéma est ici >> http://Pastebin.com/KrCVab

SEVERE: org.Apache.solr.common.SolrException: undefined field text
        at org.Apache.solr.schema.IndexSchema.getDynamicFieldType(IndexSchema.Java:1330)
        at org.Apache.solr.schema.IndexSchema$SolrQueryAnalyzer.getAnalyzer(IndexSchema.Java:408)
        at org.Apache.solr.schema.IndexSchema$SolrIndexAnalyzer.reusableTokenStream(IndexSchema.Java:383)
        at org.Apache.lucene.queryParser.QueryParser.getFieldQuery(QueryParser.Java:574)
        at org.Apache.solr.search.SolrQueryParser.getFieldQuery(SolrQueryParser.Java:206)
        at org.Apache.lucene.queryParser.QueryParser.Term(QueryParser.Java:1429)
        at org.Apache.lucene.queryParser.QueryParser.Clause(QueryParser.Java:1317)
        at org.Apache.lucene.queryParser.QueryParser.Query(QueryParser.Java:1245)
        at org.Apache.lucene.queryParser.QueryParser.TopLevelQuery(QueryParser.Java:1234)
        at org.Apache.lucene.queryParser.QueryParser.parse(QueryParser.Java:206)
        at org.Apache.solr.search.LuceneQParser.parse(LuceneQParserPlugin.Java:79)
        at org.Apache.solr.search.QParser.getQuery(QParser.Java:143)
        at org.Apache.solr.handler.component.QueryComponent.prepare(QueryComponent.Java:105)
        at org.Apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.Java:165)
        at org.Apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.Java:129)
        at org.Apache.solr.core.SolrCore.execute(SolrCore.Java:1376)
        at org.Apache.solr.handler.PingRequestHandler.handleRequestBody(PingRequestHandler.Java:67)
        at org.Apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.Java:129)
        at org.Apache.solr.core.SolrCore.execute(SolrCore.Java:1376)
        at org.Apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.Java:365)
        at org.Apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.Java:260)
        at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:235)
        at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:206)
        at org.Apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.Java:233)
        at org.Apache.catalina.core.StandardContextValve.invoke(StandardContextValve.Java:191)
        at org.Apache.catalina.core.StandardHostValve.invoke(StandardHostValve.Java:127)
        at org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:102)
        at org.Apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.Java:109)
        at org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:293)
        at org.Apache.coyote.http11.Http11Processor.process(Http11Processor.Java:859)
        at org.Apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.Java:602)
        at org.Apache.Tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.Java:489)
        at Java.lang.Thread.run(Thread.Java:679)
14
Lee Davis

Il ne s'agit pas du type de champ "texte". Il s'agit d'un champ nommé "texte".

Vous avez changé le champ par défaut dans config en "search_text". Veuillez essayer de renommer toutes les références à "search_text" en "text". Si cela résout le problème, vous savez quelque part dans la configuration que vous faites référence au champ "texte", peut-être dans solrconfig.xml comme suggéré dans Requête Solr - Erreur HTTP 404 texte de champ non défini

J'espère que ça aide.

22
krishnakumarp

j'ai ceci dans mon fichier solrconfig.xml.

<requestHandler name="/admin/ping" class="solr.PingRequestHandler">
 <lst name="invariants">
  <str name="q">solrpingquery</str>
 </lst>
 <lst name="defaults">      
  <str name="echoParams">all</str>
  </lst>
</requestHandler>

Si vous ne l'avez pas ajouté dans schema.xml, ajoutez-le

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

Cela résoudra votre problème.

Merci

9
Ghulam Rasool

Ça m'est aussi arrivé aujourd'hui. Si vous faites une requête lorsque l'erreur se produit, vous devez doubler les données de la requête comme suit:

chemin de fichier: "données à interroger"

3
Bob

J'ai eu la même erreur lorsque j'ai nettoyé la partie fq de la requête. Après désinfection, le solr a reçu

...&fq=type\:Product&...

Bien que j'aie un champ nommé type, l'erreur disait "Texte de champ non défini".

Lorsque j'ai supprimé la désinfection, la requête était correcte alors:

...&fq=type:Product&...

La cause du message d'erreur déroutant était dans solrconfig.xml:

<requestHandler name="/select" class="solr.SearchHandler">
  <lst name="defaults">
    <str name="echoParams">explicit</str>
    <int name="rows">10</int>
    <str name="df">text</str>
  </lst>
</requestHandler>
2
mirelon

dans l'interface d'administration de solr, vous pouvez voir le schéma en cours, vous pouvez être sûr que vous êtes sur la bonne voie. ci-dessous pictrues ilistruates

4.10.2 et version supérieure (supposons)

solr.4.10.2

versions inférieures à 4.10.2. vous devez utiliser le menu de gauche Scheme.

solr.4.10.2

2
Halis Yılboğa