Sphinx 可以使用 IN 子句进行 NOT AND 过滤吗?

Can Sphinx do a NOT AND filter with an IN clause?

这个问题是 的更复杂的扩展。

但是,在这种情况下,假设我有一个具有以下整数属性的索引:

category
type

这样每个文档都有一个 category ID 和一个 type ID。

假设我还有一个 category ID 列表:

category_list = [1,3,5,7,9]

以及 type 个 ID 的列表:

type_list = [1,2]

我想过滤所有 NOT (IN category_list AND IN type_list)

的文档

我再次使用 Python sphinxapi.py

这可以做到吗?

非常相似,只是使用IN()函数

.setSelect("*, IN(category,1,3,5,7,9)+IN(type,1,2) AS myfilter")
.setFilter("myfilter", [2], true)

不确定将列表转换为字符串的最佳 python 语法,但这应该不难。