2

クライアント アプリケーションが Solr 4.2.1 サーバーを検出し、ドキュメントのインデックスを作成できるようです。まだクエリコードを書いていません。しかし、Solr Admin バックオフィスにアクセスしてクエリをクリックすると、次の例外が発生します。

Apr 16, 2013 4:55:31 PM org.apache.solr.core.SolrCore execute
INFO: [1050] webapp=/viparis-solr-server path=/admin/file params={file=/usr/local/tomcat7/webapps/viparis-solr-server/Proto/solr/common/fr/schema.xml&contentType=text/xml;charset%3Dutf-8} status=500 QTime=27
Apr 16, 2013 4:55:31 PM org.apache.solr.common.SolrException log
SEVERE: null:java.lang.NullPointerException
        at org.apache.solr.handler.admin.ShowFileRequestHandler.showFromFileSystem(ShowFileRequestHandler.java:212)
        at org.apache.solr.handler.admin.ShowFileRequestHandler.handleRequestBody(ShowFileRequestHandler.java:122)
        at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
        at org.apache.solr.core.SolrCore.execute(SolrCore.java:1816)
        at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:448)
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:269)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
        at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)

実際のところ、ファイル/usr/local/tomcat7/webapps/viparis-solr-server/Proto/solr/common/fr/schema.xmlは存在し、Tomcat サーバーにはそのファイルにアクセスするための読み取り権限があります。このパスは、コア構成の一部として solr.xml で定義されます。

何か案が?

編集: Arkain の提案の後、ここに私の schema.xml の一部があります。実際には、適切に動作している別の Solr サーバーから取得した後に変更した唯一の部分なので、問題はそこにある可能性があります。

    <field name="TYPE" type="string" indexed="true" stored="true"/>
    <field name="id_manifestation" type="string" indexed="true" stored="true"/>
    <field name="nom" type="string" indexed="true" stored="true" omitNorms="false"/>
    <field name="nomFr" type="text_full" indexed="false" stored="true"/>
    <field name="nomEn" type="text_full" indexed="false" stored="true"/>
    <field name="theme" type="string" indexed="false" stored="true" multiValued="true"/>
    <field name="descriptionEn" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="descriptionFr" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="motsCleEn" type="text_full" indexed="true" stored="true" multiValued="true"/>
    <field name="motsCleFr" type="text_full" indexed="true" stored="true" multiValued="true"/>
    <field name="dateDebut" type="date" indexed="true" stored="true"/>
    <field name="dateFin" type="date" indexed="true" stored="true"/>
    <field name="url" type="string" indexed="false" stored="true"/>
    <field name="logo" type="string" indexed="false" stored="true"/>

編集: ここに私のsolrconfig.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<!--
 This is a stripped down config file used for a simple example...  
 It is *not* a good example to work from. 
-->
<config>
  <luceneMatchVersion>LUCENE_41</luceneMatchVersion>
  <!--  The DirectoryFactory to use for indexes.
        solr.StandardDirectoryFactory, the default, is filesystem based.
        solr.RAMDirectoryFactory is memory based, not persistent, and doesn't work with replication. -->
  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/>

  <dataDir>${solr.core1.data.dir:}</dataDir>

  <updateHandler class="solr.DirectUpdateHandler2">
<!--     <updateLog> -->
<!--       <str name="dir">${solr.core1.data.dir:}</str> -->
<!--     </updateLog> -->
  </updateHandler>

  <!-- realtime get handler, guaranteed to return the latest stored fields 
    of any document, without the need to commit or open a new searcher. The current 
    implementation relies on the updateLog feature being enabled. -->
  <requestHandler name="/get" class="solr.RealTimeGetHandler">
    <lst name="defaults">
      <str name="omitHeader">true</str>
    </lst>
  </requestHandler>

 <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" /> 

  <requestDispatcher handleSelect="true" >
    <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" formdataUploadLimitInKB="2048" />
  </requestDispatcher>

  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
  <requestHandler name="/analysis/field" startup="lazy" class="solr.FieldAnalysisRequestHandler" />
  <requestHandler name="/update" class="solr.UpdateRequestHandler"  />
  <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />

  <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>

  <!-- multi-colored tag FragmentsBuilder -->
<!--    <fragmentsBuilder name="colored" class="org.apache.solr.highlight.ScoreOrderFragmentsBuilder"> -->
<!--      <lst name="defaults"> -->
<!--        <str name="hl.tag.pre"><![CDATA[ -->
<!--             <b style="background:yellow">,<b style="background:lawgreen">, -->
<!--             <b style="background:aquamarine">,<b style="background:magenta">, -->
<!--             <b style="background:palegreen">,<b style="background:coral">, -->
<!--             <b style="background:wheat">,<b style="background:khaki">, -->
<!--             <b style="background:lime">,<b style="background:deepskyblue">]]></str> -->
<!--        <str name="hl.tag.post"><![CDATA[</b>]]></str> -->
<!--      </lst> -->
<!--    </fragmentsBuilder> -->

   <!-- Spell Check

        The spell check component can return a list of alternative spelling
        suggestions.  

        http://wiki.apache.org/solr/SpellCheckComponent
     -->
  <searchComponent name="spellcheck" class="solr.SpellCheckComponent">

    <str name="queryAnalyzerFieldType">textSpell</str>


    <lst name="spellchecker">
        <str name="name">default</str>
        <str name="field">textng</str>
        <str name="spellcheckIndexDir">spellchecker</str>
        <str name="classname">solr.IndexBasedSpellChecker</str>
        <str name="buildOnCommit">true</str>
        <str name="comparatorClass">score</str>
    </lst>

<!--<lst name="spellchecker">-->
<!--    <str name="name">suggest</str>-->
<!--    <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>-->
<!--    <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>-->
<!--    -->
<!--    <str name="field">textng</str>   the indexed field to derive suggestions from -->
<!--    <float name="threshold">0.005</float>-->
<!--    <str name="buildOnCommit">true</str>-->
<!--</lst>-->
  </searchComponent>

  <!-- A request handler for demonstrating the spellcheck component.  

       NOTE: This is purely as an example.  The whole purpose of the
       SpellCheckComponent is to hook it into the request handler that
       handles your normal user queries so that a separate request is
       not needed to get suggestions.

       IN OTHER WORDS, THERE IS REALLY GOOD CHANCE THE SETUP BELOW IS
       NOT WHAT YOU WANT FOR YOUR PRODUCTION SYSTEM!

       See http://wiki.apache.org/solr/SpellCheckComponent for details
       on the request parameters.
    -->
  <requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
    <lst name="defaults">
        <str name="df">textng</str>
        <str name="spellcheck.dictionary">default</str>
        <str name="spellcheck.onlyMorePopular">true</str>
        <str name="spellcheck.extendedResults">true</str>
        <str name="spellcheck.collate">true</str>
        <str name="spellcheck.count">10</str>
        <str name="spellcheck.maxCollations">10</str>
        <str name="spellcheck.maxCollationTries">10</str>
        <str name="spellcheck.collateExtendedResults">true</str>
        <str name="spellcheck">true</str>
        <str name="defType">edismax</str>
        <str name="rows">100</str>
        <str name="fl">*,score</str>
        <str name="qf">textng^100</str>
        <str name="sort">TYPE asc, score desc</str>
        <str name="pf">textng^100</str>
        <double name="typeboost">1.0</double>
        <str name="debugQuery">false</str>

        <str name="facet">on</str>
        <str name="facet.field">nom_manifestation</str>
        <str name="facet.limit">-1</str>
        <str name="hl.highlightMultiTerm">true</str>
        <str name="hl.fragsize">200</str>
        <str name="hl.snippets">200</str>
<!--        <str name="hl.fragmentsBuilder">colored</str> -->
<!--        <str name="hl.fragListBuilder">simple</str> -->
        <str name="hl.fl">*</str>
        <str name="hl.usePhraseHighlighter">true</str>
        <str name="hl">true</str>

    </lst>
    <arr name="first-components">
        <str>spellcheck</str>
    </arr>
</requestHandler>

<requestHandler name="/selectItem" class="solr.SearchHandler" startup="lazy">
    <lst name="defaults">
        <str name="df">nom</str>
        <str name="rows">100</str>
        <str name="fl">*,score</str>
        <str name="qf">nom^100</str>
        <str name="sort">TYPE asc, score desc</str>
        <double name="typeboost">1.0</double>
        <str name="debugQuery">false</str>
    </lst>
</requestHandler>

<requestHandler name="/store" class="solr.SearchHandler"
    startup="lazy">
    <lst name="defaults">
        <str name="df">nom</str>
        <str name="spellcheck.onlyMorePopular">false</str>
        <str name="spellcheck.extendedResults">true</str>
        <str name="spellcheck.collate">true</str>
        <str name="spellcheck.count">1</str>
        <str name="spellcheck">true</str>
        <str name="defType">edismax</str>
        <str name="rows">100</str>
        <str name="sort">score desc</str>
        <double name="typeboost">1.0</double>
        <str name="debugQuery">false</str>
        <str name="qf">nom^100 textphon^50</str>
        <str name="facet">on</str>
        <str name="facet.field">nom_manifestation</str>
        <str name="facet.limit">-1</str>
        <str name="hl.highlightMultiTerm">true</str>
        <str name="hl.fragsize">200</str>
        <str name="hl.snippets">200</str>
<!--        <str name="hl.fragmentsBuilder">colored</str> -->
<!--        <str name="hl.fragListBuilder">simple</str> -->
        <str name="hl.fl">*</str>
        <str name="hl.usePhraseHighlighter">true</str>
        <str name="hl">true</str>
    </lst>
    <arr name="last-components">
        <str>spellcheck</str>
    </arr>
</requestHandler>

  <searchComponent class="solr.SpellCheckComponent" name="suggest">
    <lst name="spellchecker">
      <str name="name">suggest</str>
      <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
      <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
      <!-- Alternatives to lookupImpl: 
           org.apache.solr.spelling.suggest.fst.FSTLookup   [finite state automaton]
           org.apache.solr.spelling.suggest.fst.WFSTLookupFactory [weighted finite state automaton]
           org.apache.solr.spelling.suggest.jaspell.JaspellLookup [default, jaspell-based]
           org.apache.solr.spelling.suggest.tst.TSTLookup   [ternary trees]
      -->
      <str name="field">textng</str>  <!-- the indexed field to derive suggestions from -->
      <float name="threshold">0.005</float>
      <!--str name="buildOnCommit">true</str-->
<!--
      <str name="sourceLocation">american-english</str>
-->
    </lst>
  </searchComponent>
  <requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/suggest">
    <lst name="defaults">
      <str name="spellcheck">true</str>
      <str name="spellcheck.dictionary">suggest</str>
      <str name="spellcheck.onlyMorePopular">true</str>
      <str name="spellcheck.count">5</str>
      <str name="spellcheck.collate">true</str>
    </lst>
    <arr name="components">
      <str>suggest</str>
    </arr>
  </requestHandler>


  <!-- config for the admin interface --> 
  <admin>
    <defaultQuery>solr</defaultQuery>
  </admin>

</config>
4

2 に答える 2

2

solr の起動時に他のエラーが発生していないことを確認してください。Solr は を読み取り、solr.xml起動時にこれらのファイルに異常がある場合は、ログに別のエラーが記録されているはずです。念のため、サーバーを再起動できますか?solrconfig.xmlschema.xml

1 つ考えられるのは のデフォルト値ですsolrconfig.xmlが、エラー メッセージは異なります。あなたが投稿したスキーマにcontentという名前のフィールドがないことに気付きました。ただし、このフィールドは solr-home スケルトンで使用されます。solrconfig.xml でこのような構造を確認してください

 <lst name="defaults">
   // more defaults
   <str name="df">content</str>
 </lst>

この場合、起動時に警告が表示されるはずです。これにより、インデックス作成が機能する理由が説明されますが(デフォルトに依存しないでください)、クエリは失敗します。

別の考え。何らかの方法でサーブレット コンテナを強化しましたか? Solr はgetClassLoader().getResource()、ファイルを検索するために多くのことを使用します。しかし、これが事実である場合、より多くのエラーが発生するはずです。

ブラウザでスキーマを表示できますか (スキーマではなく、ドロップダウンからコアを選択します)

于 2013-04-16T18:00:43.700 に答える