//$Id: BlogEntry.java 13984 2011-01-11 12:45:45Z sannegrinovero $ package domain; import java.util.Date; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.ManyToOne; import org.apache.solr.analysis.LowerCaseFilterFactory; import org.apache.solr.analysis.NGramFilterFactory; import org.apache.solr.analysis.SnowballPorterFilterFactory; import org.apache.solr.analysis.StandardTokenizerFactory; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; import org.hibernate.validator.Length; import org.hibernate.validator.NotNull; import org.hibernate.search.annotations.Analyzer; import org.hibernate.search.annotations.AnalyzerDef; import org.hibernate.search.annotations.AnalyzerDefs; import org.hibernate.search.annotations.Fields; import org.hibernate.search.annotations.Indexed; import org.hibernate.search.annotations.DocumentId; import org.hibernate.search.annotations.Field; import org.hibernate.search.annotations.Parameter; import org.hibernate.search.annotations.TokenFilterDef; import org.hibernate.search.annotations.TokenizerDef; /** * Represents a blog entry. * * @author Simon Brown * @author Sanne Grinovero */ @Entity @Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) @Indexed @AnalyzerDefs({ @AnalyzerDef(name = "en", tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class), filters = { @TokenFilterDef(factory = LowerCaseFilterFactory.class), @TokenFilterDef(factory = SnowballPorterFilterFactory.class, params = { @Parameter(name = "language", value = "English") }) }), @AnalyzerDef(name="ngrams", tokenizer=@TokenizerDef(factory=StandardTokenizerFactory.class), filters={ @TokenFilterDef(factory = LowerCaseFilterFactory.class), @TokenFilterDef(factory = NGramFilterFactory.class, params = { @Parameter(name = "minGramSize", value = "3"), @Parameter(name = "maxGramSize", value = "3") }) })} ) public class BlogEntry { @Id @Length(min=1, max=20) @DocumentId private String id; @NotNull @Length(max=70) @Fields({ @Field(name="title:en", analyzer=@Analyzer(definition="en")), @Field(name="title:ngrams", analyzer=@Analyzer(definition="ngrams"))}) private String title; @Length(max=200) private String excerpt; @NotNull @Length(max=1400) @Fields({ @Field(name="body:en", analyzer=@Analyzer(definition="en")), @Field(name="body:ngrams", analyzer=@Analyzer(definition="ngrams"))}) private String body; @NotNull private Date date = new Date(); @ManyToOne @NotNull private Blog blog; public BlogEntry(Blog blog) { this.blog = blog; } BlogEntry() {} public String getId() { return id; } public String getTitle() { return title; } public String getExcerpt() { return excerpt; } public String getBody() { return body; } public Date getDate() { return date; } public void setBody(String body) { this.body = body; } public void setDate(Date date) { this.date = date; } public void setExcerpt(String excerpt) { if ( "".equals(excerpt) ) excerpt=null; this.excerpt = excerpt; } public void setId(String id) { this.id = id; } public void setTitle(String title) { this.title = title; } }