2014-02-20 29 views
0

我使用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,或避免重複不必要的索引?

我是一個獅身人面像noob,所以我不知道如何處理這個問題。

回答

1

http://www.sitepoint.com/hierarchical-data-database/

它談論的是一個數據庫,但同樣的系統同樣適用獅身人面像之內。它可能需要一段時間才能得到你的頭,但它很值得精通(恕我直言!)。

(即將左列/右列添加到數據庫,然後將它們作爲屬性包含在sphinx索引中)

相關問題