Solr は初めてで、Solrj pojo を使用してドキュメントを作成しようとしています。
Pojo で遵守すべき Solr 型から Java へのマッピングはありますか? pojo のすべてが文字列ですか? Javaの基本型からSolrへの魔法のマッピングはありますか?それは透過的ですか?
これは基本的な質問のようですが、答えが見つかりません。
ティア。
@Field
のアノテーションを使用して、pojo を solr タイプにマップできます。solrj
以下はサンプルコードです
import org.apache.solr.client.solrj.beans.Field;
public class Person {
@Field
private int id;
@Field("first_name")
private String firstName;
@Field("last_name")
private String lastName;
@Field
private String age;
// Getters & setters
}
schema.xml
フィールドが含まれている必要がありますid, first_name, last_name, age
。
この質問に対する答えは、Solrj Bean (@Field を使用) の場合、フィールドの Java タイプは、solr.*Field タイプに対応するJava OBJECTであると思われます。
たとえば、solr.BoolField は java.lang.Boolean にマップされます。
Long、Integer、Float などについても同様です。
これが次の貧しい魂に役立つことを願っています:-)
Solrj は、RequestWriter を使用してドキュメントを XML またはバイナリとしてストリーミングできます。document.addField メソッドはオブジェクトを取るので、Java データ型を渡すことは問題ありませんが、マッピングは見たことがありません。存在する場合は、おそらく基本的なデータ型を想定しています。サンプルコードを見るとそうです。
私の記憶が正しければ (これは少し前のことです)、日付に問題があり、独自のフォーマッターを作成しました。これは Solr 1.2 の頃のもので、そのコードは正常に機能し、現在も運用中です
http://lucene.apache.org/solr/api-4_0_0-BETA/org/apache/solr/common/SolrInputDocument.html
InputType の JavaDoc は次のとおりです。http://lucene.apache.org/solr/api-4_0_0-BETA/org/apache/solr/common/SolrInputField.html