I start with: (setq A (db 'aid '+Article 3814726210))

Check to see that there's actually something there:

(mapc show (collect 'a1 '+Similarity A))

Output is the list of similarities:

{3At} (+Similarity)
   value 4040
   a2 {2b2}
   a1 {2la}
{3Ai} (+Similarity)
   value 3750
   a2 {2kq}
   a1 {2la}
..

I try: (? (db 'a1 '+Similarity A @X) (show @X)) (I assumed you forgot
the quotes above or maybe they're not needed?), and: (? (db a1
+Similarity A @X) (show @X)). Both return -> NIL which I would not
expect since I know that A is in fact in a1. Anyway switching to a2
yields the same result which would be expected since I know that A is
not in any a2 position.

Odd?

/Henrik

On Thu, Oct 30, 2008 at 11:57 PM, Alexander Burger <[EMAIL PROTECTED]> wrote:
> Hi Henrik,
>
>>             ((a1 +Similarity @A a2 +Similarity @A))
>> ...
>> According to Alex the generator clause in question is the equivalent
>> of an SQL OR clause, it is however returning NIL instead of the
>
> Right. The "normal" clause
>
>>             ((a1 +Similarity @A))
>
> tells Pilog to search the 'a1' index of the class '+Similarity'.
>
> The above version in turn says to first search the 'a1' index tree, and
> when all entries matching '@A' are traversed, continue with the 'a2'
> tree. So this is like an OR of both sets of data. It looks perfectly all
> right to me.
>
> Do you get the expected values if you ask
>
>   : (? (db a1 +Similarity "ValueForA1" @X) (show @X))
>
> and
>
>   : (? (db a2 +Similarity "ValueForA2" @X) (show @X))
>
>
>> Now if ((a1 +Similarity @A a2 +Similarity @A)) was really an OR clause
>> it should return the same result as ((a1 +Similarity @A)), but it's
>
> True.
>
>> obviously not so we missed something, but what?
>
> What is the result? Does it return nothing at all?
>
> Cheers,
> - Alex
> --
> UNSUBSCRIBE: mailto:[EMAIL PROTECTED]
>
-- 
UNSUBSCRIBE: mailto:[EMAIL PROTECTED]

Reply via email to