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)
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.
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
Ç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"
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>
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)
versions inférieures à 4.10.2. vous devez utiliser le menu de gauche Scheme.