Solr スキーマを設計する最善の方法を理解しようとしています。そして、solrJを使用してより簡単な方法でそれを行う可能性がある場合.
現在、solr のサンプル サーバーを使用しているので、solr がどのように機能するかを理解できます。ここまで正しく理解できていれば、次のスキーマを定義する方法は次のとおりです。
Book= { title: String,
year: Int }
Author = { name: String,
books: [book] } <-- list/array of book objects
CopyFieldsを使用することです:
<fields>
<field name="name" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="books" type="string" indexed="true" stored="false" multiValued="false"/>
<!-- books will contain: -->
<field name="title" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="year" type="int" indexed="true" stored="true"/>
</fields>
<copyField source="title" dest="books"/>
<copyField source="year" dest="books"/>
私は正しかったですか?もしそうなら、新しい著者をデータベースにアップロードするにはどうすればよいですか? solr-clientを使用してnode.jsサーバーからアップロードしようとしました:
function ADDONE(){
var docs = [];
//generate 4 docs.
for(var i = 0; i <= 4 ; i++){
var doc = {
id : 20 + i ,
name : "Author"+i ,
books: [{title: "firstBook" , year: 1900+i} ,
{title: "SecondBook" , year: 1901+i} ]
}
docs.push(doc);
}
// Add documents to Solr
client.add(docs,function(err,obj){
if(err){
console.log(err);
}else{
console.log(obj);
}
});
}
ADDONE();
しかし、これはうまくいきません。各ドキュメントを定義する正しい方法は何ですか? 私も近いですか?私が示した例は node.js solr-client 用に書かれていますが、私は Java を使用することを好み、それは solr クライアント (solrJ?) です。
また、1900 年から 1910 年までの書籍のクエリの契約がどのように形成されたかも知りたいです。
ありがとう。