我正在使用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,或者避免重复不必要的索引?
我是一个斯芬克斯的笨蛋,所以我不知道如何解决这个问题。