我运行此查询并返回15个产品
+(+organizationId:6 +(mainGenre:dance alternateGenre:dance) +(state:pending state:published state:accepted)) +(alias:audioProduct)
因此,这意味着有15种产品的organizationId = 6 AND(Main_Genre = Dance或Alternate_Genre = Dance)。但是,下面看到的这个查询不会返回任何内容。
+(+organizationId:6 +(-mainGenre:pop -alternateGenre:pop) +(state:pending state:published state:accepted)) +(alias:audioProduct)
现在查询类似于“organizationId = 6 AND Main_Genre!= Pop AND Alternate_Genre!= Pop”。我认为应该至少返回15种产品。我的意思是它应该返回为MainGenre:Dance发现的产品。
有谁知道我在这里做错了什么?
答案 0 :(得分:1)
在(-mainGenre:pop -alternateGenre:pop)
中,隐含了OR运算符,即它等同于
Main_Genre != pop OR Alternate_Genre != pop
而你所追求的是
Main_Genre != pop AND Alternate_Genre != pop
您应该尝试这样做(请参阅&&
运算符):
+(+organizationId:6 +(-mainGenre:pop && -alternateGenre:pop) +(state:pending state:published state:accepted)) +(alias:audioProduct)
答案 1 :(得分:0)
AND关系是distributive property
让*
成为AND
关系,+
成为OR
关系,A
,B
和C
三个属性。<登记/>
然后:A*(B+C) = A*B + A*C
您的陈述意味着:
(organizationId = 6 AND Main_Genre!=舞蹈) OR (organizationId = 6 AND Alternate_Genre!= pop)