[hibernate-dev] [Hibernate Search] Feedback on Document Field lazy loading

Emmanuel Bernard emmanuel at hibernate.org
Sun Jun 15 11:18:14 EDT 2008


On  Jun 15, 2008, at 04:24, Sanne Grinovero wrote:

> what is your goal? performance?

Performance, memory consumption, reduce the gap between entity loading  
and projection from a perf point of view (assuming projection loads  
the same amount of data).

>
>
> from the code I guess you don't intend to support something like
> setProjection( FullTextQuery.DOCUMENT,  "lastname" );

No, if you want a Document, you want it all most likely, otherwise a  
simple field projection will do it better and benefit from the fields.

>
>
> as you skip fieldnames processing when you hit DOCUMENT;
> I agree with you it would be a bit stupid, but someone could want
> to do that for some purpose.
>
> I generally don't like the return types as arrays very much, it  
> would be
> very cool to get anyway an entity containing only the projected data
> (a sort of extremely-lazy state) but I guess it would introduce a  
> lot of other
> problems. (overwrite and possibly change contained data when  
> (eventually) really loaded from DB?)

We had this goal in mind from day one (Vincent had actually). But this  
leads to a lot of problems including non unicity, the need to use  
bytecode enhancement etc. We can start a separate thread but we have  
more valuable features on the table before this one.

>
> What if you would permit uses to pass their own DocumentExtractor,  
> impl
> to return a wrapping object?
> This is what we do in the library system ( we just use Search to  
> build Documents, not for searching them),
> depending on the page view I know which fields I want to show and  
> have a simple bean to link to JSF,
> so I iterate on results and produce a list of beans with my own  
> pluggable logic, using a different one
> each time depending on the data need.

setProjection + a result transformer do that for you already feature  
wise

ftQuery.setProjection("firstname",  
"lastname").setResultTransformer(new  
AliasToBeanResultTransformer(PersonView.class) );

>
>
> org.hibernate.search.FullTextQuery hibQuery =  
> s.createFullTextQuery( query, Employee.class );
> DocumentExtractor dt = new EmployeeDocToFullnameExtractor();
> hibQuery.setProjection( dt );
>
> and nothing stops you to support some syntax as
> hibQuery.setProjection( FullTextQuery.THIS, FullTextQuery.SCORE,   
> dt );
> even if it is obviously redundant.
>
> IMHO you move the responsability of managing weird fieldbridges to  
> the users this way...

you mean in your solution or in mine?

>
>
> Sanne
>
> 2008/6/14 Emmanuel Bernard <emmanuel at hibernate.org>:
> I played around the idea of not loading unnecessary fields when  
> loading a Lucene document.
> It turns out this is not easily possible
> http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-213
>
> I would appreciate feedback in JIRA on this one.
>
>
> --
> Emmanuel Bernard
> emmanuel at hibernate.org
> http://in.relation.to
> http://blog.emmanuelbernard.com
> http://twitter.com/emmanuelbernard
>
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/hibernate-dev/attachments/20080615/00f95a09/attachment.html 


More information about the hibernate-dev mailing list