Sphinx 如何高效地返回共享索引的多个文档?

Sphinx 如何高效地返回共享索引的多个文档?,sphinx,Sphinx,我正在用Sphinx索引一些数据我有已分类的对象,并且这些类别具有继承权。我的基本表格结构如下: Objects | id | name | | 1 | ABC | | 2 | DEF | ... Categories | id | name | parent_id | | 1 | My Category | 0 | | 2 | A Child | 1 | | 3 | Another Child | 1

我正在用Sphinx索引一些数据我有已分类的对象,并且这些类别具有继承权。我的基本表格结构如下:

Objects
| id | name |
| 1  | ABC  |
| 2  | DEF  |
...

Categories
| id | name          | parent_id |
| 1  | My Category   | 0         |
| 2  | A Child       | 1         |
| 3  | Another Child | 1         |
...

Object_Categories
| object_id | category_id |
| 1         | 2           |
| 2         | 3           |
...
我的配置当前为:

sql_query = SELECT categories.id, objects.name, parent_id FROM categories \
    LEFT JOIN object_categories ON categories.id = object_categories.category_id \
    LEFT JOIN objects ON objects.id = object_categories.object_id

sql_attr_uint = parent_id
这将返回包含与我的搜索匹配的对象的任何类别的类别ID,但我需要进行调整以获取该类别或其任何子类别中的对象

显然,我可以将这个查询与另一个从匹配的类别父级获取ID的查询联合起来,以此类推(可以达到4或5级),但这似乎效率非常低。有没有办法在第一个字段中返回多个文档ID,或者避免重复不必要的索引

我是斯芬克斯·努伯,所以我不知道如何解决这个问题。

参见

它说的是一个数据库,但同一个系统在sphinx中同样有效。这可能需要一段时间才能让你的头脑清醒过来,但它非常值得掌握(IMHO!)

(即将左/右列添加到数据库中,然后将其作为属性包含在sphinx索引中)