SOLR字段查询跳过记录if..语句

SOLR field query skip records if..statement

我在solr中有很多产品,都带有field_code和field_stock,我想排除这样的记录,用字段查询

-field_code:(A OR B) OR (-(field_code:C AND field_stock:false) AND -(field_code:D AND field_stock:false))

所以,所有带有 field_code A 或 B

的产品

所有带有 field_code C 或 D 且都没有库存的产品,应排除在外

其他所有东西都应该归还吗?

更新:

我在查询中添加了另一个字段,但它不起作用。

我有 field_code , field_stock 和新的 field_type

我需要从查询中删除所有产品,即:

没有:field_code = A OR B OR C OR D 和 field_stock = 0 (-field_stock:1) 和 field_type = 'joe'

所以像这样:

SELECT * FROM table WHERE (field_code NOT IN (A,B,C,D) and field_type = 'joe' AND field_stock=0)

所以返回所有记录,但是上面的?有什么意义吗?

当使用否定查询时,您必须从某些东西中减去查询 - 仅具有否定查询本身不会做任何事情(如果您只有一个否定查询而没有任何布尔运算符 Solr 有助于为集合添加前缀前面的所有文件,因为这可能就是你的意思)。

类似这样的内容可能符合您的描述:

(*:* -field_code:(A OR B)) OR 
(*:* -(field_code:(C OR D) AND field_stock:false))

我假设 field_code 是多值的,因为 OR 之后的第二项否则没有意义。