this チュートリアルに従ってデータインポートハンドラー(Solr 4.1)をセットアップしようとしていますが、以前の投稿で提案された解決策を試しました マルチコアsolrでDIHを構成 そしてdataimportjarをに追加しましたクラスパスですが、エラーは引き続き発生します。これを解決する方法はありますか?
例外スタックトレース全体は次のとおりです。
SEVERE: Unable to create core: collection1
org.Apache.solr.common.SolrException: RequestHandler init failure
at org.Apache.solr.core.SolrCore.<init>(SolrCore.Java:794)
at org.Apache.solr.core.SolrCore.<init>(SolrCore.Java:607)
at org.Apache.solr.core.CoreContainer.createFromLocal(CoreContainer.Java:1003)
at org.Apache.solr.core.CoreContainer.create(CoreContainer.Java:1033)
at org.Apache.solr.core.CoreContainer$3.call(CoreContainer.Java:629)
at org.Apache.solr.core.CoreContainer$3.call(CoreContainer.Java:624)
at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:303)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:138)
at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:439)
at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:303)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:138)
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:680)
Caused by: org.Apache.solr.common.SolrException: RequestHandler init failure
at org.Apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.Java:168)
at org.Apache.solr.core.SolrCore.<init>(SolrCore.Java:731)
... 13 more
Caused by: org.Apache.solr.common.SolrException: Error loading class 'org.Apache.solr.handler.dataimport.DataImportHandler'
at org.Apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.Java:438)
at org.Apache.solr.core.SolrCore.createInstance(SolrCore.Java:507)
at org.Apache.solr.core.SolrCore.createRequestHandler(SolrCore.Java:581)
at org.Apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.Java:154)
... 14 more
Caused by: Java.lang.ClassNotFoundException: org.Apache.solr.handler.dataimport.DataImportHandler
at Java.net.URLClassLoader$1.run(URLClassLoader.Java:202)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(URLClassLoader.Java:190)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:306)
at Java.net.FactoryURLClassLoader.loadClass(URLClassLoader.Java:627)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:247)
at Java.lang.Class.forName0(Native Method)
at Java.lang.Class.forName(Class.Java:247)
at org.Apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.Java:422)
... 17 more
Feb 12, 2013 12:37:47 PM org.Apache.solr.common.SolrException log
SEVERE: null:org.Apache.solr.common.SolrException: Unable to create core: collection1
at org.Apache.solr.core.CoreContainer.recordAndThrow(CoreContainer.Java:1654)
at org.Apache.solr.core.CoreContainer.create(CoreContainer.Java:1039)
at org.Apache.solr.core.CoreContainer$3.call(CoreContainer.Java:629)
at org.Apache.solr.core.CoreContainer$3.call(CoreContainer.Java:624)
at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:303)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:138)
at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:439)
at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:303)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:138)
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:680)
Caused by: org.Apache.solr.common.SolrException: RequestHandler init failure
at org.Apache.solr.core.SolrCore.<init>(SolrCore.Java:794)
at org.Apache.solr.core.SolrCore.<init>(SolrCore.Java:607)
at org.Apache.solr.core.CoreContainer.createFromLocal(CoreContainer.Java:1003)
at org.Apache.solr.core.CoreContainer.create(CoreContainer.Java:1033)
... 10 more
Caused by: org.Apache.solr.common.SolrException: RequestHandler init failure
at org.Apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.Java:168)
at org.Apache.solr.core.SolrCore.<init>(SolrCore.Java:731)
... 13 more
Caused by: org.Apache.solr.common.SolrException: Error loading class 'org.Apache.solr.handler.dataimport.DataImportHandler'
at org.Apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.Java:438)
at org.Apache.solr.core.SolrCore.createInstance(SolrCore.Java:507)
at org.Apache.solr.core.SolrCore.createRequestHandler(SolrCore.Java:581)
at org.Apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.Java:154)
... 14 more
Caused by: Java.lang.ClassNotFoundException: org.Apache.solr.handler.dataimport.DataImportHandler
at Java.net.URLClassLoader$1.run(URLClassLoader.Java:202)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(URLClassLoader.Java:190)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:306)
at Java.net.FactoryURLClassLoader.loadClass(URLClassLoader.Java:627)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:247)
at Java.lang.Class.forName0(Native Method)
at Java.lang.Class.forName(Class.Java:247)
at org.Apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.Java:422)
... 17 more
Solrconfig.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<config>
<luceneMatchVersion>LUCENE_41</luceneMatchVersion>
<lib dir="../../../contrib/extraction/lib" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-cell-\d.*\.jar" />
<lib dir="../../../contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-clustering-\d.*\.jar" />
<lib dir="../../../contrib/langid/lib/" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-langid-\d.*\.jar" />
<lib dir="../../../contrib/velocity/lib" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-velocity-\d.*\.jar" />
<lib dir="../../../dist/" regex="solr-dataimporthandler-4.1.0.jar\d.*\.jar" />
<lib dir="../../lib/" regex=".*\.jar" />
<dataDir>${solr.data.dir:}</dataDir>
<directoryFactory name="DirectoryFactory"
class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>
<indexConfig>
</indexConfig>
<jmx />
<updateHandler class="solr.DirectUpdateHandler2">
<updateLog>
<str name="dir">${solr.ulog.dir:}</str>
</updateLog>
<autoCommit>
<maxTime>15000</maxTime>
<openSearcher>false</openSearcher>
</autoCommit>
</updateHandler>
<query>
<maxBooleanClauses>1024</maxBooleanClauses>
<filterCache class="solr.FastLRUCache"
size="512"
initialSize="512"
autowarmCount="0"/>
<queryResultCache class="solr.LRUCache"
size="512"
initialSize="512"
autowarmCount="0"/>
<documentCache class="solr.LRUCache"
size="512"
initialSize="512"
autowarmCount="0"/>
<enableLazyFieldLoading>true</enableLazyFieldLoading>
<queryResultWindowSize>20</queryResultWindowSize>
<queryResultMaxDocsCached>200</queryResultMaxDocsCached>
<listener event="newSearcher" class="solr.QuerySenderListener">
<arr name="queries">
</arr>
</listener>
<listener event="firstSearcher" class="solr.QuerySenderListener">
<arr name="queries">
<lst>
<str name="q">static firstSearcher warming in solrconfig.xml</str>
</lst>
</arr>
</listener>
<useColdSearcher>false</useColdSearcher>
<maxWarmingSearchers>2</maxWarmingSearchers>
</query>
<requestDispatcher handleSelect="false" >
<requestParsers enableRemoteStreaming="true"
multipartUploadLimitInKB="2048000"
formdataUploadLimitInKB="2048"/>
<httpCaching never304="true" />
</requestDispatcher>
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<str name="df">app_data</str>
</lst>
</requestHandler>
<requestHandler name="/query" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">all</str>
<str name="wt">xml</str>
<str name="indent">true</str>
<str name="df">app_data</str>
<str name="spellcheck.dictionary">default</str>
<str name="spellcheck.dictionary">wordbreak</str>
<str name="spellcheck">on</str>
<str name="spellcheck.extendedResults">true</str>
<str name="spellcheck.count">10</str>
<str name="spellcheck.alternativeTermCount">5</str>
<str name="spellcheck.maxResultsForSuggest">5</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.collateExtendedResults">true</str>
<str name="spellcheck.maxCollationTries">10</str>
<str name="spellcheck.maxCollations">5</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>
<requestHandler name="/get" class="solr.RealTimeGetHandler">
<lst name="defaults">
<str name="omitHeader">true</str>
<str name="wt">json</str>
<str name="indent">true</str>
</lst>
</requestHandler>
<requestHandler name="/browse" class="solr.SearchHandler">
</requestHandler>
<requestHandler name="/update" class="solr.UpdateRequestHandler">
</requestHandler>
<requestHandler name="/update/json" class="solr.JsonUpdateRequestHandler">
<lst name="defaults">
<str name="stream.contentType">application/json</str>
</lst>
</requestHandler>
<requestHandler name="/update/csv" class="solr.CSVRequestHandler">
<lst name="defaults">
<str name="stream.contentType">application/csv</str>
</lst>
</requestHandler>
<requestHandler name="/update/extract"
startup="lazy"
class="solr.extraction.ExtractingRequestHandler" >
<lst name="defaults">
<str name="lowernames">true</str>
<str name="uprefix">ignored_</str>
<str name="captureAttr">true</str>
<str name="fmap.a">links</str>
<str name="fmap.div">ignored_</str>
</lst>
</requestHandler>
<requestHandler name="/analysis/field"
startup="lazy"
class="solr.FieldAnalysisRequestHandler" />
<requestHandler name="/analysis/document"
class="solr.DocumentAnalysisRequestHandler"
startup="lazy" />
<requestHandler name="/admin/"
class="solr.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>
<requestHandler name="/debug/dump" class="solr.DumpRequestHandler" >
<lst name="defaults">
<str name="echoParams">explicit</str>
<str name="echoHandler">true</str>
</lst>
</requestHandler>
<requestHandler name="/replication" class="solr.ReplicationHandler" >
</requestHandler>
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
<str name="queryAnalyzerFieldType">text_general</str>
<lst name="spellchecker">
<str name="name">default</str>
<str name="field">keyword</str>
<str name="classname">solr.DirectSolrSpellChecker</str>
<str name="distanceMeasure">internal</str>
<float name="accuracy">0.5</float>
<int name="maxEdits">2</int>
<int name="minPrefix">0</int>
<int name="maxInspections">10</int>
<int name="minQueryLength">4</int>
<float name="maxQueryFrequency">0.02</float><!--appears in more than 2% of the documents its assumed to be correct, and no suggestions are given, I don't think use of this parameter makes any sense since dictionary is based on keyword field which is unique. Not sure if frequency is also based on that column only.-->
</lst>
<lst name="spellchecker">
<str name="name">wordbreak</str>
<str name="classname">solr.WordBreakSolrSpellChecker</str>
<str name="field">keyword</str>
<str name="combineWords">true</str>
<str name="breakWords">true</str>
<int name="maxChanges">10</int>
</lst>
</searchComponent>
<requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="df">app_data</str>
<str name="spellcheck.dictionary">default</str>
<str name="spellcheck.dictionary">wordbreak</str>
<str name="spellcheck">on</str>
<str name="spellcheck.extendedResults">true</str>
<str name="spellcheck.count">10</str>
<str name="spellcheck.alternativeTermCount">5</str>
<str name="spellcheck.maxResultsForSuggest">5</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.collateExtendedResults">true</str>
<str name="spellcheck.maxCollationTries">10</str>
<str name="spellcheck.maxCollations">5</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>
<searchComponent name="tvComponent" class="solr.TermVectorComponent"/>
<requestHandler name="/tvrh" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="df">app_data</str>
<bool name="tv">true</bool>
</lst>
<arr name="last-components">
<str>tvComponent</str>
</arr>
</requestHandler>
<searchComponent name="clustering"
enable="${solr.clustering.enabled:false}"
class="solr.clustering.ClusteringComponent" >
<lst name="engine">
<str name="name">default</str>
<str name="carrot.algorithm">org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str>
<str name="LingoClusteringAlgorithm.desiredClusterCountBase">20</str>
<str name="carrot.lexicalResourcesDir">clustering/carrot2</str>
<str name="MultilingualClustering.defaultLanguage">ENGLISH</str>
</lst>
<lst name="engine">
<str name="name">stc</str>
<str name="carrot.algorithm">org.carrot2.clustering.stc.STCClusteringAlgorithm</str>
</lst>
</searchComponent>
<requestHandler name="/clustering"
startup="lazy"
enable="${solr.clustering.enabled:false}"
class="solr.SearchHandler">
<lst name="defaults">
<bool name="clustering">true</bool>
<str name="clustering.engine">default</str>
<bool name="clustering.results">true</bool>
<str name="carrot.title">name</str>
<str name="carrot.url">id</str>
<str name="carrot.snippet">features</str>
<bool name="carrot.produceSummary">true</bool>
<bool name="carrot.outputSubClusters">false</bool>
<str name="defType">edismax</str>
<str name="qf">
app_data
</str>
<str name="q.alt">*:*</str>
<str name="rows">10</str>
<str name="fl">*</str>
</lst>
<arr name="last-components">
<str>clustering</str>
</arr>
</requestHandler>
<searchComponent name="terms" class="solr.TermsComponent"/>
<requestHandler name="/terms" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<bool name="terms">true</bool>
<bool name="distrib">false</bool>
</lst>
<arr name="components">
<str>terms</str>
</arr>
</requestHandler>
<searchComponent name="elevator" class="solr.QueryElevationComponent" >
<str name="queryFieldType">string</str>
<str name="config-file">elevate.xml</str>
</searchComponent>
<requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="echoParams">explicit</str>
<str name="df">app_data</str>
</lst>
<arr name="last-components">
<str>elevator</str>
</arr>
</requestHandler>
<requestHandler name="/dataimport" class="org.Apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">/Users/username/data-config.xml</str>
</lst>
</requestHandler>
<searchComponent class="solr.HighlightComponent" name="highlight">
<highlighting>
<fragmenter name="gap"
default="true"
class="solr.highlight.GapFragmenter">
<lst name="defaults">
<int name="hl.fragsize">100</int>
</lst>
</fragmenter>
<fragmenter name="regex"
class="solr.highlight.RegexFragmenter">
<lst name="defaults">
<int name="hl.fragsize">70</int>
<float name="hl.regex.slop">0.5</float>
<str name="hl.regex.pattern">[-\w ,/\n\"']{20,200}</str>
</lst>
</fragmenter>
<formatter name="html"
default="true"
class="solr.highlight.HtmlFormatter">
<lst name="defaults">
<str name="hl.simple.pre"><![CDATA[<em>]]></str>
<str name="hl.simple.post"><![CDATA[</em>]]></str>
</lst>
</formatter>
<encoder name="html"
class="solr.highlight.HtmlEncoder" />
<fragListBuilder name="simple"
class="solr.highlight.SimpleFragListBuilder"/>
<fragListBuilder name="single"
class="solr.highlight.SingleFragListBuilder"/>
<fragListBuilder name="weighted"
default="true"
class="solr.highlight.WeightedFragListBuilder"/>
<fragmentsBuilder name="default"
default="true"
class="solr.highlight.ScoreOrderFragmentsBuilder">
</fragmentsBuilder>
<fragmentsBuilder name="colored"
class="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>
<boundaryScanner name="default"
default="true"
class="solr.highlight.SimpleBoundaryScanner">
<lst name="defaults">
<str name="hl.bs.maxScan">10</str>
<str name="hl.bs.chars">.,!? 	 </str>
</lst>
</boundaryScanner>
<boundaryScanner name="breakIterator"
class="solr.highlight.BreakIteratorBoundaryScanner">
<lst name="defaults">
<str name="hl.bs.type">Word</str>
<str name="hl.bs.language">en</str>
<str name="hl.bs.country">US</str>
</lst>
</boundaryScanner>
</highlighting>
</searchComponent>
<queryResponseWriter name="json" class="solr.JSONResponseWriter">
<str name="content-type">text/plain; charset=UTF-8</str>
</queryResponseWriter>
<queryResponseWriter name="velocity" class="solr.VelocityResponseWriter" startup="lazy"/>
<queryResponseWriter name="xslt" class="solr.XSLTResponseWriter">
<int name="xsltCacheLifetimeSeconds">5</int>
</queryResponseWriter>
<admin>
<defaultQuery>*:*</defaultQuery>
</admin>
</config>
クラスが見つからない問題を処理する最善の方法は、必要なjarを取得してsolr/lib
dirに配置することです。ここで、solr dirは、solrコアの構成に使用されるsolr.xmlを含み、以下を追加する必要があります。 solrconfig.xmlへの行
<lib dir="../lib" />
これにより、solrインストールのすべてのコアに必要なすべてのライブラリがロードされます。
Jarをコアに制限する必要がある場合は、intに配置します
instanceDir/lib
、この場合、solrconfig.xmlの構成は必要ありません。
データインポートハンドラーを機能させるには、JDBCjarとdist/solr-dataimporthandler-*.jar
を構成したlibディレクトリに配置する必要があります。
Solr Coreディレクトリにlibフォルダーを追加し、必要なlibjarファイルをこれに追加します。この場合、solrconfig.xmlファイルでlibパスを指定する必要はありません。
今日、Solr 4.1をMySQLで動作させようと試み始めたところ、あなたとまったく同じ問題が発生しました。
私は次のことを行うことでそれを解決することができました:
1つを除くすべてのデフォルトLIBディレクトリをコメントアウトしました。
<lib dir="../../../contrib/extraction/lib" regex=".*\.jar" /> <!-- <lib dir="../../../dist/" regex="solr-cell-\d.*\.jar" /> <lib dir="../../../contrib/clustering/lib/" regex=".*\.jar" /> <lib dir="../../../dist/" regex="solr-clustering-\d.*\.jar" /> <lib dir="../../../contrib/langid/lib/" regex=".*\.jar" /> <lib dir="../../../dist/" regex="solr-langid-\d.*\.jar" /> <lib dir="../../../contrib/velocity/lib" regex=".*\.jar" /> <lib dir="../../../dist/" regex="solr-velocity-\d.*\.jar" /> -->
最新の mysqlコネクタjar rファイルと solr dataimporthandler jar を取得しました
それらを残りのディレクトリに配置しました。
サーバーを再起動し、動作しました。
これはWindows8X86_64にあります。
これがお役に立てば幸いです。
Solr 4.1.0では、プロジェクトに次のjarファイルを追加します。
solr-dataimporthandler-4.1.0、solr-dataimporthandler-extras-4.1.0
再度実行してください。動作します。
選択した答えは確かに機能しますが(つまり、「すべてを$instancedir/lib
にコピーする」ということになります)、solr構成は、solrライブラリと「拡張」ライブラリに付属する「標準/グローバル」ライブラリを分離する方法を提供します(つまり、インスタンスに固有のカスタムsolrハンドラー/パーサーなど)。
solrがロードする必要のあるクラスをロードするために調べるディレクトリが少なくとも2つあります。${solr.install.dir}
は、solrがインストールされている場所です。スクリプト(v4.10.xで利用可能)を使用します。これは、デフォルトでbin/solr
スクリプトが実行されるディレクトリに設定されます。 solrconfig.xml
は、このディレクトリをsolrconfig.xml
ファイルで指定されたjarをロードするためのベースとして使用します。 Java -D
パラメータでオーバーライドするか、選択した回答で指定されているようにファイル自体で完全にオーバーライドできます。これは、「グローバル」をロードする必要があると思います。ライブラリ。
これで、2番目のsolr変数${solr.solr.home}
があります。これは、すべてのインデックスアーティファクト/ファイルが作成されるインスタンスホームであり、ここにsolr.xml
があります。このディレクトリは、(異なるポートで実行されている)Solrインスタンスごとに個別に用意されています。そのsolr.xml
ファイルには、${solr.solr.home}
に相対的なフォルダーである sharedLib
要素を含めることができます。これは、solrインスタンスに固有の「拡張」ライブラリがロードされると思います。
コアのlibフォルダーに同じ例外.addsolr-dataimporthandler-extras-4.7.2.jarとsolr-dataimporthandler-4.7.2.jarがありました。これは私のために働いた。