added hibernate search module

This commit is contained in:
Timo Westkämper 2010-03-26 09:20:31 +00:00
parent 6d0213ef89
commit aed9aed3e7
6 changed files with 50 additions and 9 deletions

View File

@ -39,15 +39,15 @@ public class SearchQuery<T> implements SimpleQuery<SearchQuery<T>>, SimpleProjec
private final PEntity<T> path;
public SearchQuery(Session session, PEntity<T> path, LuceneSerializer serializer) {
this(Search.getFullTextSession(session), path, serializer);
public SearchQuery(Session session, PEntity<T> path, boolean lower) {
this(Search.getFullTextSession(session), path, lower);
}
public SearchQuery(FullTextSession session, PEntity<T> path, LuceneSerializer serializer) {
public SearchQuery(FullTextSession session, PEntity<T> path, boolean lower) {
this.queryMixin = new QueryMixin<SearchQuery<T>>(this);
this.session = Assert.notNull(session,"session");
this.path = Assert.notNull(path,"path");
this.serializer = Assert.notNull(serializer,"serializer");
this.serializer = new SearchSerializer(lower);
}
@Override

View File

@ -0,0 +1,25 @@
package com.mysema.query.search;
import org.hibernate.search.annotations.Field;
import com.mysema.query.lucene.LuceneSerializer;
import com.mysema.query.types.Path;
public class SearchSerializer extends LuceneSerializer{
public SearchSerializer(boolean lowerCase) {
super(lowerCase);
}
@Override
public String toField(Path<?> path) {
if (path.getAnnotatedElement() != null){
Field fieldAnn = path.getAnnotatedElement().getAnnotation(Field.class);
if (fieldAnn != null && fieldAnn.name().length() > 0){
return fieldAnn.name();
}
}
return super.toField(path);
}
}

View File

@ -12,8 +12,6 @@ public class SearchQueryTest extends AbstractQueryTest{
private QUser user = new QUser("user");
private LuceneSerializer luceneSerializer = new LuceneSerializer(true);
public void setUp(){
super.setUp();
Session session = getSession();
@ -36,7 +34,7 @@ public class SearchQueryTest extends AbstractQueryTest{
}
private SearchQuery<User> query(){
return new SearchQuery<User>(getSession(), user, luceneSerializer);
return new SearchQuery<User>(getSession(), user, true);
}
}

View File

@ -0,0 +1,17 @@
package com.mysema.query.search;
import static org.junit.Assert.*;
import org.junit.Test;
public class SearchSerializerTest {
@Test
public void testToField() {
SearchSerializer serializer = new SearchSerializer(true);
QUser user = new QUser("user");
assertEquals("email", serializer.toField(user.emailAddress));
assertEquals("firstName", serializer.toField(user.firstName));
}
}

View File

@ -42,7 +42,7 @@ public class User implements Serializable {
private String middleName;
@NaturalId
@Field(index = Index.UN_TOKENIZED, store = Store.YES)
@Field(name="email", index = Index.UN_TOKENIZED, store = Store.YES)
private String emailAddress;
@OneToMany(cascade = { CascadeType.ALL }, mappedBy = "applicant")

View File

@ -35,7 +35,8 @@
<module>../querydsl-maven-plugin</module>
<module>../querydsl-hql</module>
<module>../querydsl-jdoql</module>
<module>../querydsl-lucene</module>
<module>../querydsl-lucene</module>
<module>../querydsl-hibernate-search</module>
<!--
<module>../querydsl-docs</module>
-->