2011-08-02 32 views
3

我想搜索对象名称。 如果我有这样的结构: /de/myspace/media/justAnotherPdf.pdf如何搜索ZCatalog对象名称

然后我想搜索的名称“justAnotherPdf”找到它或类似“justAnot” 我已经索引的PDF文件。

但我不能用TextIndexNG2或PathIndex搜索它。

回答

3

目前,这是不支持外的开箱。对象标识符(getId)仅作为字段值编入索引,因此只能作为整个字符串查找。

您需要将单独的索引添加到目录以支持您的用例。您可以添加一个新的TextIndexNG2索引,并使用一个新名称索引getId方法。在ZMI中,找到portal_catalog,然后是'索引'选项卡,然后在右侧找到用于添加新索引的下拉菜单。选择一个令人难忘的名字(例如'fullTextId')并使用getId作为索引属性。

你需要做一个reindex,但仅限于该索引。添加完成后,在“索引”选项卡中选中它(勾选复选框),然后在该页面底部选择“重建索引”。现在,您可以使用通配符搜索在您的自定义搜索中使用此索引。

3
import os.path 
name = os.path.splitext(os.path.split(url)[1])[0] 

解释代码:

from os.path import split, splitext 
url = '/de/myspace/media/justAnotherPdf.pdf' 
path, name_with_ext = split(url) 
name_without_ext, ext = splitext(name_with_ext) 
+0

好吧,我明白了。但是当用户给脚本搜索时,我必须进入每个媒体目录;)但是我有大约400多个文件在不同的文件夹中...... – Hackbard

+0

这只是提取文件名的方法,没有扩展名,它可能是封装在一个函数中,你可以在'os.walk'循环中使用它... = P – BrainStorm