IMHO there are lots of extra info to potentially return to the user beyond a list of query
results. Besides a boolean indicating partial results and a long indicating query time, I
can imagine other cases, such as HSEARCH-623 (facets). Other examples would be highlight
information, Morelikethis objects, and even generic key-value pair containing output from
some custom 'search component'
Gustavo
On 6 Nov 2010, at 15:50, Sanne Grinovero wrote:
 there's a similar case already:
 query.getResultSize() //relates to the last returned list
 
 and so looking at the complexity of proposed alternatives, I'm not
 strongly against your original suggestion to provide
 a method on the query object.
 
 Alternatively we might consider there might be enough good reasons to
 create a new object to
 collect information about the executed query.
 
 query.getLastQueryExecutionMetadata().
  .hasPartialResults()
  .executionTime() //possibly interesting
  .getResultSize()
 
 I would be fine too in considering the Query object the right place
 for this info (as it currently is) documenting that these methods
 refer to the last execution.
 
 Sanne
 
 2010/11/6 Emmanuel Bernard <emmanuel(a)hibernate.org>:
> The other option I've been thinking about is to get limitFetchTime() /
limitTimeAllowedTo() to return a Future object or some equivalent notion say a
BooleanHolder.
> 
> BooleanHolder hasPartialResults = query.limitTimeAllowedTo(500, MILLISECONDS,
hasPartialResults);
> query.list();
> if ( hasPartialResults.get() ) {
>  //do stuffs
> }
> 
> But:
>  - that's a bit weird to get a future in this sync API
>  - it breaks the method chaining used in the rest of the API
> 
> Another possibility is to optionally let people pass the boolean holder that is
populated after the call
> 
> BooleanHolder hasPartialResults = new BooleanHolder();
> List results = query.limitTimeAllowedTo(500, MILLISECONDS,
hasPartialResults).list();
> if ( hasPartialResults.get() ) {
>  //do stuffs
> }
> 
> WDYT?
> 
> On 6 nov. 2010, at 15:25, Emmanuel Bernard wrote:
> 
>> You'll need to extend:
>> - List
>> - Iterator
>> - ScrollableResults
>> 
>> Not sure that's a good thing.
>> 
>> You can reuse the query as long as you check hasPartialResults() before calling
list/iterate/scroll query again.
>> 
>> PS: we should add tests about query reusability, I'm not sure it works as
expected today.
>> 
>> 
>> On 6 nov. 2010, at 12:31, Sanne Grinovero wrote:
>> 
>>> Hello,
>>> about naming I have no better ideas:
>>> .limitFetchTime() //slightly different, not very happy about it either
>>> 
>>> about API, does it really make sense to have hasPartialResults() as a
>>> method of the Query?
>>> It should be a List property I think - I have no strong opinions about
>>> this as I don't like having to extend the List implementation.
>>> 
>>> But really Query is something I might want to reuse - unlikely but I'd
>>> expect that to work fine.
>>> So what about:
>>> 
>>> SomeNewList results = query.list(500, TimeUnit.MILLISECONDS)
>>> or a batter named method.
>>> 
>>> So:
>>> 
>>> if ( results.hasPartialResults() ) {
>>>   displayWarningToUser();
>>> }
>>> 
>>> This is one of those cases in which I miss the option of having a
>>> couple of values from a function.
>>> 
>>> Sanne
>>> 
>>> 2010/11/5 Emmanuel Bernard <emmanuel(a)hibernate.org>:
>>>> If you can find better name for the API, please advise. I am not happy
with the current version
>>>> 
>>>> Query luceneQuery = ...;
>>>> FullTextQuery query = fullTextSession.createFullTextQuery(luceneQuery,
User.class);
>>>> 
>>>> //define the timeout in seconds
>>>> query.limitFetchingTime(500, TimeUnit.MILLISECONDS);
>>>> List results = query.list();
>>>> 
>>>> if ( query.hasPartialResults() ) {
>>>>   displayWarningToUser();
>>>> }
>>>> 
>>>> Emmanuel
>>>> _______________________________________________
>>>> hibernate-dev mailing list
>>>> hibernate-dev(a)lists.jboss.org
>>>> 
https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>>> 
>> 
>> 
>> _______________________________________________
>> hibernate-dev mailing list
>> hibernate-dev(a)lists.jboss.org
>> 
https://lists.jboss.org/mailman/listinfo/hibernate-dev
> 
> 
 
 _______________________________________________
 hibernate-dev mailing list
 hibernate-dev(a)lists.jboss.org
 
https://lists.jboss.org/mailman/listinfo/hibernate-dev