package org.jboss.seam.wiki.core.search.metamodel; import org.apache.lucene.search.Query; import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.BooleanClause; import org.jboss.seam.wiki.core.search.PropertySearch; import org.jboss.seam.wiki.core.search.annotations.SearchableType; /** * A logical searchable property of a single indexed field. * * @author Christian Bauer */ public class SearchablePropertySingle extends SearchableProperty { private String name; public SearchablePropertySingle(String name, String description, SearchableType type) { super(description, type); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String toString() { return getName(); } public Query getQuery(PropertySearch search) { BooleanQuery query = new BooleanQuery(); Query iq = buildIncludeQuery(getName(), search); if (iq != null) { log.debug("include query: " + iq.toString()); query.add(iq, BooleanClause.Occur.MUST ); Query eq= buildExcludeQuery(getName(), search); if (eq != null) { log.debug("exclude query: " + eq.toString()); query.add(eq, BooleanClause.Occur.MUST_NOT); } } return query.getClauses().length > 0 ? query : null; } }