Solrの最新バージョン(5.1.0)でschema.xmlを使用しようとしています。デフォルトではSolr 5.1.0はマネージドスキーマを使用しているようですが、特定のコレクションにはschema.xmlを使用したいと思います。
そこで、新しいコレクションを作成します(Windowsでsolr create -c my_collectionを使用し、からschema.xmlをコピーします)
server\solr\configsets\basic_configs\conf\schema.xml
に
server\solr\my_collection\conf\schema.xml
その後、私は設定を変更します
server\solr\my_collection\conf\solrconfig.xml
使用する
<schemaFactory class="ClassicIndexSchemaFactory"/>
これを行った後、サーバーの起動時に例外が発生します。
org.Apache.solr.common.SolrException:org.Apache.solr.common.SolrException: fieldType 'booleans' not found in the schema
ここでひどく悪いことをしていますか?この種のロジックは機能しないのですか?
更新:Stractraceは次のようになります。
org.Apache.solr.common.SolrException: fieldType 'booleans' not found in the schema
at org.Apache.solr.core.SolrCore.<init>(SolrCore.Java:885)
at org.Apache.solr.core.SolrCore.<init>(SolrCore.Java:652)
at org.Apache.solr.core.CoreContainer.create(CoreContainer.Java:518)
at org.Apache.solr.core.CoreContainer$1.call(CoreContainer.Java:283)
at org.Apache.solr.core.CoreContainer$1.call(CoreContainer.Java:277)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:266)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
at Java.lang.Thread.run(Thread.Java:745)
Caused by: org.Apache.solr.common.SolrException: fieldType 'booleans' not found in the schema
at org.Apache.solr.update.processor.AddSchemaFieldsUpdateProcessorFactory$TypeMapping.populateValueClasses(AddSchemaFieldsUpdateProcessorFactory.Java:244)
at org.Apache.solr.update.processor.AddSchemaFieldsUpdateProcessorFactory.inform(AddSchemaFieldsUpdateProcessorFactory.Java:170)
at org.Apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.Java:620)
at org.Apache.solr.core.SolrCore.<init>(SolrCore.Java:868)
問題は、schema.xml
ファイルで定義されていないフィールドタイプbooleans
を参照していることです。コアを作成すると、ファイルmanaged-schema
がserver\solr\my_collection\conf\
に作成されます。このファイルの名前をschema.xml
に変更し、solrをClassicIndexSchemaFactory
で再起動すると正常に動作します。
私がここで抱えていた問題は、実際にbooleans
フィールド型を使用することとは何の関係もありませんでした。問題は、新しくアップグレードされたsolrconfig.xml
ファイルに、不明なフィールドのプロセッサがデフォルトで有効になっており、booleans
フィールドタイプとおそらく他のフィールドタイプが必要なことです。
これらはすべて、新しい例schema.xml
ではデフォルトで定義されていますが、古いschema.xml
ではおそらく定義されていません。
私にとっての解決策は、<updateRequestProcessorChain name="add-unknown-fields-to-the-schema">
のsolrconfig.xml
セクションをコメント化することでした。
または、solrconfig.xml
を単に置き換えることもできます。
フィールドタイプ{booleans}はschema.xml
で定義されていません。
それを修正する手順、
managed-schema
ファイルの名前をschema.xml
に変更しますsolrconfig.xml
を変更して、schemaFactoryクラスを置き換えます。ManagedIndexSchemaFactory
定義があれば削除します。ClassicIndexSchemaFactory
定義を追加します。<schemaFactory class="ClassicIndexSchemaFactory"/>
autoCreateFields
をsolrconfig.xml
でfalseに更新すると、次のようになります。This IndexSchema is not mutable
エラー。
${update.autoCreateFields:false}