Solrjを使ったドキュメントのインデックス作成のためのaddFieldについて

トピック作成者:ks-solruserml-bot (2024/06/12 15:14 投稿)
5
CloseClose

(The bot translated the original post https://lists.apache.org/thread/to7hpc5f4oqb33mmv89h42f8qr10wgyz into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)

こんにちは

仕様: JDK 15, Solr 8.8.1

質問: Solrj(クライアント)を使用して、ドキュメントのインデックス作成時に欠落しているフィールドタイプの例外を回避するために、スキーマに新しい 'addField' を追加することはできますか?

注: このタスクを実行するためにSolrのWebスキーマAPIを使用したくありません。Javaコードレベルでこれを行いたいと考えています。

リクエスト: そのためのコードスニペットを共有してください。

よろしくお願いします。

返信投稿者:ks-solruserml-bot (2024/06/12 15:15 投稿)

こんにちは

私は以下のURLに記載されているように新しいフィールドを実装しようとしています:
https://solr.apache.org/guide/8_1/schema-api.html

SolrJ 8.8.1を使用してJavaコードでこれを行いたいです。

注:このタスクを実行するためにSolrのWebスキーマAPIを使用したくありません。Javaコードレベルでこれを行いたいと考えています。

リクエスト:そのためのコードスニペットを共有してください。

よろしくお願いします。

返信投稿者:ks-solruserml-bot (2024/06/12 15:15 投稿)

こんにちは、

SolrJの org.apache.solr.client.solrj.request.schema.SchemaRequest を使用できます:

SchemaRequest.AddField addFieldRequest = new SchemaRequest.AddField(fieldAttributes);
SchemaResponse.UpdateResponse addFieldResponse = addFieldRequest.process(solrClient, collectionName);

よろしくお願いします。

返信投稿者:ks-solruserml-bot (2024/06/12 15:15 投稿)

こんにちは

仕様:Java 15 と SolrJ 8.10.0 / Solr を使用

手順:すでに GitHub の SolrJ ソースからこのコードを試しました。

SchemaRequest.AddField addFieldRequest = new SchemaRequest.AddField(fieldAttributes);
SchemaResponse.UpdateResponse addFieldResponse = addFieldRequest.process(solrClient, collectionName);

コードを実行した際のレスポンス:

コアを作成しました:/solr -create -c testingSolarCore

エンドポイント:"http://localhost:8081/solr"
コレクション名:"testingSolarCore"
SolrCoreAdminManageFieldTyposBean scrBn を使用し、以下の値を格納する Bean として使用しています。

solrCoreFieldTypeContent = new HashMap<String, Object>();
solrCoreFieldTypeContent.put("name", scrBn.getFieldName());
solrCoreFieldTypeContent.put("field type", scrBn.getFieldType());
solrCoreFieldTypeContent.put("stored", scrBn.isFieldStored());
solrCoreFieldTypeContent.put("indexed", scrBn.isFieldIndexed());
solrCoreFieldTypeContent.put("uninvertible", scrBn.isFieldUninvertible());
solrCoreFieldTypeContent.put("docValues", scrBn.isFieldDocValues());
solrCoreFieldTypeContent.put("multiValued", scrBn.isFieldMultiValued());
solrCoreFieldTypeContent.put("required", scrBn.isFieldRequired());

addFieldRequest = new SchemaRequest.AddField(solrCoreFieldTypeContent);
addFieldResponse = addFieldRequest.process(SolrClnt_, solrCoreAdmnBn.getNewCollectname());
this.solrCommit();

出力:

Error from server at http://localhost:8081/solr: error processing commands, errors: [{add-field={indexed=true, stored=true, name=testNames, uninvertible=true, field type=String, docValues=false, multiValued=false, required=false}, errorMessages=['type' is a required field]}],

コードスニペットを共有していただけますか?

返信投稿者:ks-solruserml-bot (2024/06/12 15:16 投稿)

「type」ではなく「field type」を使用すべきのようです。(エラーメッセージには 'type' is a required field と表示されています)

Erik

返信投稿者:ks-solruserml-bot (2024/06/12 15:16 投稿)

こんにちは

「Field Type」ではなく「type」を使用したところ、動作するようになりました...

助けてくれてありがとうございます。

このスレッドを終了します。

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2024 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?