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]