2012-09-17 60 views
3

我在文件夾內執行搜索。不幸的是,它也檢索到根文件夾,我不想那樣做。使用portal_catalog在根文件夾以外的文件夾中執行搜索

一個例子如下。如果我有類似下面的一個目錄結構:

RootFolder 
    ... SubFolder1 
    ... SubFolder2 

我希望得到以下時,我裏面RootFolder目錄搜索:

SubFolder1 
SubFolder2 

但是,相反,這是我得到:

RootFolder 
SubFolder1 
SubFolder2 

我不希望顯示根目錄。下面是我用一個文件夾中取出/搜索的項目代碼:

def queryItemRepository(self): 
    """ 
    Perform a search 
    """ 

    query = {} 

    portal_catalog = getToolByName(self, 'portal_catalog') 
    folder_path = '/'.join(self.context.getPhysicalPath()) 

    query['path'] = {'query' : folder_path, 'depth' : 2 } 
    query['sort_on'] = "sortable_title" 
    query['sort_order'] = "ascending" 

    return portal_catalog.searchResults(query) 

回答

4

路徑的depth參數搜索限制了搜索的深度,它不設置最低水平。因此,在您的搜索中,返回從folder_path到包括2個嵌套級別的子級的所有路徑。

只需篩選出根路徑;您已有上下文,因此您可以比較每個項目的網址:

for match in portal_catalog.searchResults(query): 
    if match.getPath() == folder_path: 
     continue 
    yield match 
+0

謝謝。像魅力一樣工作。 – Frankline