我是 Solr 的新手,我正在尝试使用 Solrj pojo 来创建我的文档。
我应该在我的 pojo 中遵守 Solr 类型到 Java 的映射吗?pojo 中的所有内容都是字符串吗?是否有从 Java 基本类型到 Solr 的神奇映射并且它是透明的?
这似乎是一个基本问题,但我找不到答案。
TIA。
您可以使用@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