web-dev-qa-db-ja.com

Solr 5.1.Xで管理スキーマの代わりにschema.xmlを使用する

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)
19
chris544

問題は、schema.xmlファイルで定義されていないフィールドタイプbooleansを参照していることです。コアを作成すると、ファイルmanaged-schemaserver\solr\my_collection\conf\に作成されます。このファイルの名前をschema.xmlに変更し、solrをClassicIndexSchemaFactoryで再起動すると正常に動作します。

23

私がここで抱えていた問題は、実際にbooleansフィールド型を使用することとは何の関係もありませんでした。問題は、新しくアップグレードされたsolrconfig.xmlファイルに、不明なフィールドのプロセッサがデフォルトで有効になっており、booleansフィールドタイプとおそらく他のフィールドタイプが必要なことです。

これらはすべて、新しい例schema.xmlではデフォルトで定義されていますが、古いschema.xmlではおそらく定義されていません。

私にとっての解決策は、<updateRequestProcessorChain name="add-unknown-fields-to-the-schema">solrconfig.xmlセクションをコメント化することでした。

または、solrconfig.xmlを単に置き換えることもできます。

10
Aeolun

フィールドタイプ{booleans}はschema.xmlで定義されていません。

それを修正する手順、

  • コレクションを削除
  • managed-schemaファイルの名前をschema.xmlに変更します
  • solrconfig.xmlを変更して、schemaFactoryクラスを置き換えます。
  • a)ManagedIndexSchemaFactory定義があれば削除します。
  • b)以下に示すようにClassicIndexSchemaFactory定義を追加します。

<schemaFactory class="ClassicIndexSchemaFactory"/>

  • autoCreateFieldssolrconfig.xmlでfalseに更新すると、次のようになります。

This IndexSchema is not mutableエラー。

${update.autoCreateFields:false}

  • コレクションを再作成します。
0
Hemant Thorat