私は、SpringアプリケーションでSolr 5.2.1(Dev PC上での単純なスタンドアロンインスタンス)とSolrjの実行を使用しています。Solr TextFieldからJava @Fieldへのマッピング
私はすべてうまく動作しています(Solrj Clientは@Fieldアノテーションでアノテーションされたドメインモデルをコミットして取得できます)。ドメインモデルのフィールドの1つでフリーテキスト検索を使用したいので、タイプを変更しました文字列からテキストフィールドから、私は、solrがすべてを返すか、何も返さないkey:valueペア型検索の代わりに、より自由なテキストのアプローチを可能にすることを理解しています。
のschema.xmlは
<field name="description" type="text_general" indexed="true" stored="true"/>
のJava Beanのスニペット
public String getDescription() {
return description;
}
@Field
public void setDescription(String description) {
this.description = description;
}
保存側がうまく働いた、私はSolrのヴァイJavaの豆ANS solrjを更新することが可能ですし、使用してスニペットhttpクライアント私はデータが入ってくるのを見ることができますが、私が持っている問題はクエリーの際にJava Beanを取り戻すことができないということです。 Solrは、Beanに値を設定しようとするとString型のセッターが気に入らない。次のエラーが表示されます。
Caused by: org.apache.solr.client.solrj.beans.BindingException: Exception while setting value : [PetShop] on public void search.CompanySummarySolr.setDescription(java.lang.String)
INFO [stdout] (http-localhost-127.0.0.1-8080-6) at org.apache.solr.client.solrj.beans.DocumentObjectBinder$DocField.set(DocumentObjectBinder.java:447)
INFO [stdout] (http-localhost-127.0.0.1-8080-6) at org.apache.solr.client.solrj.beans.DocumentObjectBinder$DocField.inject(DocumentObjectBinder.java:430)
INFO [stdout] (http-localhost-127.0.0.1-8080-6) at org.apache.solr.client.solrj.beans.DocumentObjectBinder.getBean(DocumentObjectBinder.java:64)
INFO [stdout] (http-localhost-127.0.0.1-8080-6) ... 64 more
INFO [stdout] (http-localhost-127.0.0.1-8080-6) Caused by: java.lang.IllegalArgumentException: argument type mismatch
私はエラーを理解していますが、テキストフィールドのマッピング方法はわかりません。 httpクライアントではJson出力はArrayのように見えますが、Solr APIではhttp://lucene.apache.org/solr/5_2_0/solr-core/org/apache/solr/schema/TextField.htmlは配列ではなくオブジェクトを拡張します。
私が見ることができるすべては、私は、エーテルを行う必要性があるが、私は戻ってそれを文字列に得るのですか。その場合には
@Field
public void setDescription(Object description) {
this.description = (???) description;
}
などのフィールドがありますか?
または私はorg.apache.solr.schema.TextField
@Field
public void setDescription(TextField description) {
this.description = description.getValueSource(???, ???);
}
しかし、私はまた、本当に初心者のために戻って文字列を取得する方法を理解していない、そして第二に、それは私が持っているように見えるを使用することができますTextFieldオブジェクトがSolrjライブラリにないので、solrライブラリ全体をプロジェクトに取り込むことができます。
私は何かを見逃してしまったと確信していますが、他のフィールドはすべて単純にマップされていますが、説明をクライアントに戻して文字列として返す方法の例は見つかりません。ストリングは、私が理解する限り、そのタイプの検索を許可しません。
すべてのヘルプは喜んだから、複数値フィールドにSolrのは、デフォルトのTextFieldを思わ