Looks fine to me looking at the examples. I haven't tried myself writing
my own queries though
to see the full potential.

On Wed, 02 Jun 2010 18:00:20 +0200, Emmanuel Bernard
<emman...@hibernate.org> wrote:

> Guys,
> I'me now done with the level of abstraction and fluidity I wanted out of  
> the query DSL. Please review before we push that out. Key features:
>  - fluent API
>  - use the field bridge system: type is passed, not raw string
>  - use the analyzer transparently
>  - simple use case simple, complex use cases possible
>
> I'm showing below a few examples demonstrating key concepts.
>
> Please comment / ask questions.
>
> Term query
> query = monthQb
>       .keyword()
>       .onField( "monthValue" )
>       .matching( 2 ) //note that monthValue is of type int
>       .createQuery();
>
> //term query, showing analyzer integration
> query = monthQb
>       .keyword()
>       .onField( "mythology_ngram" )
>       .matching( "snobored" ) //we apply the ngram filter here
>       .createQuery();
>
> //use fuzzy query
> query = monthQb
>               .keyword()
>                       .fuzzy()
>                               .threshold( .8f ) //optional
>                               .prefixLength( 1 )  //optional
>               .onField( "mythology" )
>               .matching( "calder" )
>               .createQuery();
>
> //use wildcard queries
> monthQb
>       .keyword()
>               .wildcard()
>       .onField( "mythology" )
>       .matching( "mon*" )
>       .createQuery();
>
> Alternative option
> //apply on multiple fields
> monthQb.keyword()
>       .onField( "mythology" )
>               .boostedTo( 30 )
>       .andField( "history" )
>       .matching( "whitening" )
>       .createQuery();
>
> //boost a field
> monthQb
>       .keyword()
>       .onField( "history" )
>               .boostedTo( 30 )
>       .matching( "whitening" )
>       .createQuery();
>
> Range query
> //Range query
> monthQb
>       .range()
>               .onField( "estimatedCreation" )
>               .from( from ) #from and to are actual java.util.Date. We do the 
>  
> conversion
>               .to( to ).exclude()
>               .createQuery();
>
> monthQb
>       .range()
>               .onField( "estimatedCreation" )
>               .below( brithDay )
>               .createQuery();
>
> Phrase query
> monthQb
>       .phrase()
>               .slop( 1 )
>       .onField( "mythology" )
>       .sentence( "Month whitening" )
>       .createQuery();
>
> Boolean query
> monthQb
>       .bool()
>               .should( monthQb.keyword().onField( "mythology" ).matching(  
> "whitening" ).createQuery() )
>               .should( monthQb.keyword().onField( "history" ).matching( 
> "whitening"  
> ).createQuery() )
>       .createQuery();
>
> //Boolean query all except (recommended)
> monthQb
>       .all()
>               .except( monthQb.keyword().onField( "mythology" ).matching( 
> "colder"  
> ).createQuery() )
>       .createQuery();
>
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev

_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to