我试图了解设计我的 Solr Schema 的最佳方法是什么。并且是否有可能使用 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 Client (solrJ?)。
我还想知道从 1900 年到 1910 年的图书查询合同是如何形成的。
谢谢。