Compass - 对象/搜索引擎映射(OSEM)
Compass也提供另一直配置, 使用java5 的annotation 来进行OSEM.
下面就是简单的Plain Old Java Object (POJO)类型的搜索类,使用了Compass annotations.在运行时刻, compass抽取对象属性插入和相应源数据索引中.
public class Product {
@SearchableId
private Integer id;
private Category category;
private String name;
private Double unitprice;
@SearchableProperty(name = "name")
public String getName() {
return this.name;
}
@SearchableComponent (refAlias = "category")
public Category getCategory() {
return this.category;
}
public Double getUnitprice() {
return this.unitprice;
}
//other
setter/getter...
注意可被搜索的对象必须遵守下面的规则.
1. 所有的持久化类必须有默认构造函数(没参数的构造函数).[来源www.iocblog.net]
2. OSEM要求映射类JavaBean必须有一个或更多的id主建. id属性可以是对象类型,例如java.lang.String or java.util.Date.
并且类注解使用@SearchableClassConverter或者使用定义Converter(通常继承Compass AbstractBasicConverter).
3. 使用JavaBean规范, getter/setter.
更多:@Searchable,@SearchableId,@SearchableProperty and So On Look:
http://www.opensymphony.com/compass/content/documentation.html
2 XML式配置
OSEM: 对象搜索引擎影影射(Object Search Engine Mapping),通过xml配置文件,提供了POJO's (Plain Old Java Objects)到搜索引擎.
如果采用XML的配置,一般都是 *.cpm.xml 形式 .
1) package指定了对应java类的包名,
2)class为pojo类名.contract为公共部分, 子类被可以extends.Property 对 java类的属性。
3)资源的Property引用的Search Engine meta-data.
注意: id为类标识.
<compass-core-mapping package="org.springside.bookstore.domain">
<contract alias="product">
<id name="id"/>
<property name="name">
<meta-data>${springside.name}</meta-data>
</property>
<property name="descn">
<meta-data>${springside.descn}</meta-data>
</property>
</contract> [来源www.iocblog.net]<class name="Book" alias="${springside.book}" extends="product">
<property name="author">
<meta-data>${springside.author}</meta-data>
</property>
<property name="publisher">
<meta-data>${springside.publisher}</meta-data>
</property>
</class></compass-core-mapping>
文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。