为 Solr 映射 POJO
为此,您需要使用org.apache.solr.client.solrj.beans.Field
-Annotation 注释 POJO 的字段/访问方法。
当然,这些字段需要通过它们的名称直接匹配您的 schema.xml 的字段,或者通过您在 Field 注释中给出名称来指向 Solr 的名称。
例如,您fields
在 schema.xml 中有以下定义
<fields>
<field name="id" type="int" indexed="true" stored="true" multiValued="false" />
<field name="title" type="string" indexed="true" stored="true" multiValued="false" />
</fields>
然后你会有一个像这样的 POJO
import org.apache.solr.client.solrj.beans.Field;
public class SampleDocument {
public SampleDocument() {
// required for solrj to make an instance
}
public SampleDocument(int id, String title) {
this.id = id;
this.title = title;
}
public String getTitle() {
return title;
}
@Field("title")
public void setTitle(String title) {
this.title = title;
}
}
使用 POJO 更新 Solr 的索引
索引这些 POJO 的代码相当简单。您可以为此目的使用 solrj 的 SolrServer。
// connect to your solr server
SolrServer server = new HttpSolrServer("http://HOST:8983/solr/");
// adding a single document
SampleDocument document = new SampleDocument(1, "title 1");
server.addBean(document);
// adding multiple documents
List<SampleDocument> documents = Arrays.asList(
new SampleDocument(2, "title 2"),
new SampleDocument(3, "title 3"));
server.addBeans(documents);
// commit changes
server.commit();
// query solr for something
QueryResponse response = server.query(new SolrQuery("*:*"));
// get the response as List of POJO type
List<SampleDocument> foundDocuments = response.getBeans(SampleDocument.class);
进一步阅读
结果是我们的代码和以下参考