Indexing plone.indexer和灵巧性问题

Indexing plone.indexer和灵巧性问题,indexing,plone,dexterity,Indexing,Plone,Dexterity,我希望为我基于灵巧度的自定义内容类型的属性(“扇区”)启用一个称为扇区的特殊索引 在我的模式中,在types/mycontent.py中我有: 然后,我在indexer.py中以这种方式定义索引 最后,在根包configure.zcml中: 然而,它似乎不起作用。即使在重新安装产品后,我也看不到portal_目录中的索引,catalog brain对象似乎也没有 我做错了什么?您没有定义目录索引。这只会使索引器可供添加。您需要在GenericSetup配置文件中包含catalog.xml,其

我希望为我基于灵巧度的自定义内容类型的属性(“扇区”)启用一个称为扇区的特殊索引

在我的模式中,在types/mycontent.py中我有:

然后,我在indexer.py中以这种方式定义索引

最后,在根包configure.zcml中:


然而,它似乎不起作用。即使在重新安装产品后,我也看不到portal_目录中的索引,catalog brain对象似乎也没有


我做错了什么?

您没有定义目录索引。这只会使索引器可供添加。您需要在GenericSetup配置文件中包含catalog.xml,其中包含:

<?xml version="1.0"?>
<object name="portal_catalog" meta_type="Plone Catalog Tool">
 <index name="Sectors" meta_type="KeywordIndex">
  <indexed_attr value="Sectors"/>
 </index>
</object>

可接受的解决方案可能有点模糊,因此这里有几个澄清:

1) 不要编辑全局通用设置

除非您正在做一些非常奇怪的事情,否则您将把站点设置为一系列plone扩展,并具有如下文件夹结构:

app.plugin/
app.plugin/app/
app.plugin/app/configure.zcml
app.plugin/app/profiles/
app.plugin/app/profiles/default
app.plugin/app/profiles/default/types
app.plugin/app/profiles/default/types/Folder.xml
app.plugin/app/profiles/default/types/app.mydexteritytype.xml
app.plugin/app/profiles/default/types.xml
app.plugin/app/profiles/default/portlets.xml
app.plugin/app/profiles/default/catalog.xml <---- ADD THIS
如果没有其他内容,您应该看到一些输出,如:

2013-08-12 16:42:28 INFO GenericSetup.archetypetool Archetype tool imported.
2013-08-12 16:42:28 INFO GenericSetup.resourceregistry Stylesheet registry imported.
2013-08-12 16:42:28 INFO GenericSetup.resourceregistry Javascript registry imported.
indexed: <MyDexterityType at /Plone/test/cat-document-0>
indexed: <MyDexterityType at /Plone/test/hello>
2013-08-12 16:42:28信息GenericSetup.archetypetool已导入原型工具。
2013-08-12 16:42:28导入了INFO GenericSetup.resourceregistry样式表注册表。
2013-08-12 16:42:28导入了INFO GenericSetup.resourceregistry Javascript注册表。
索引:
索引:
6) 一些文档()中提到的grok.global_adapter()是关于注册虚拟属性的,并不减少设置catalog.xml的需要

最后,有人在github上给出了一个工作示例,非常有用:


不过,不要使用常规安装程序添加新索引,因为如果使用quick_installer重新安装,您将丢失所有数据。重新安装产品通常是一种错误的迹象。
<?xml version="1.0"?>
<object name="portal_catalog" meta_type="Plone Catalog Tool">
 <index name="Sectors" meta_type="KeywordIndex">
  <indexed_attr value="Sectors"/>
 </index>
</object>
app.plugin/
app.plugin/app/
app.plugin/app/configure.zcml
app.plugin/app/profiles/
app.plugin/app/profiles/default
app.plugin/app/profiles/default/types
app.plugin/app/profiles/default/types/Folder.xml
app.plugin/app/profiles/default/types/app.mydexteritytype.xml
app.plugin/app/profiles/default/types.xml
app.plugin/app/profiles/default/portlets.xml
app.plugin/app/profiles/default/catalog.xml <---- ADD THIS
@indexer(IMyDexterityType)
def dummy_indexer(obj, **kw):
    try:
        print('indexed: %r' % obj)
        return obj.title
    except Exception as e:
        print('index fail: %r' % e)
    return ''
2013-08-12 16:42:28 INFO GenericSetup.archetypetool Archetype tool imported.
2013-08-12 16:42:28 INFO GenericSetup.resourceregistry Stylesheet registry imported.
2013-08-12 16:42:28 INFO GenericSetup.resourceregistry Javascript registry imported.
indexed: <MyDexterityType at /Plone/test/cat-document-0>
indexed: <MyDexterityType at /Plone/test/hello>