Compass - 对象/搜索引擎映射(OSEM)

1 Annotations式配置

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
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。