クライアント アプリケーションが 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>