On Jan 16, 2014, at 7:53 PM, Andy Seaborne <[email protected]> wrote:

> On 16/01/14 08:41, Pierre-Andre Michel wrote:
>> Hello Andy,
>> 
>> As promised I have run a test to see if text:query allows the use of 
>> multiple predicates as proposed below:
> 
> thanks for testing that.  That way you can OR as well as AND.
> 
>> 
>>>>> So if you write:
>>>>> 
>>>>> ?a text:query(pred:cv-name 'ubl AND field2:ubiquitin' 10) .
>>>>> 
>>>>> where field2 is the name of text:field name then you may be a single, 
>>>>> conjunctive query.
>>>> 
>>>> OK,  I will try what you suggest and tell you if it works or not.
>> 
>> and the answer is: Yes, it works, great !
>> 
>> So I can run efficiently queries with multiple criteria (fields / 
>> predicates) for a single subject variable.
>> Now If I want to text:query 2 subject variables ?a and ?b, for example:
>> 
>> ?a text:query(pred:organ 'liver', 25) .
>> ?b text:query(pred:author 'John Smith') .
>> 
>> the second query will still be called 25 times if 25 solutions are found for 
>> ?a during graph traveral.
>> Why don't we cache the result of the queries so that after the first call we 
>> dont invoke solr or lucene anymore but simply return an iterator on the 
>> result list previously built ?
>> Does it make sense to you ?
> 
> The optimizer does nothing here so that's what happens.  It needs a 
> cross-product spotter to do that; it doesn't have one.
>  The optimizer/evaluator has no concept of "text:query" being special so it 
> blindly executes it.

OK, so is there a way to provide the optimizer with a cross-product spotter 
concerning test:query ?

> 
> But aren't you going to connect ?a and ?b in some way?

Yes ?a and ?b would be connected some way but the problem remains.

> 
>       Andy
> 
> 

Reply via email to