我已经创建了一个新的dexterity类型,并且该类型运行良好,并且在Plone搜索结果中标题很好。但是我还需要为其余的字段编制索引。
根据Dexterity手册,我创建了一个@indexer和目录,我可以在portal_catalog中看到“varenummer”索引中填充了正确的列数据。
我的问题是,我无法在plone搜索领域搜索“Varenummer”。
有什么想法吗?
我在vare.py中设置了以下架构
class IVare(form.Schema):
"""Leverandør type, som kan oprettes alle steder.
"""
title = schema.TextLine(
title=_(u"Varenavn"),
)
varenummer = schema.TextLine(
title=_(u"Varenummer"),
)
stoerrelse = schema.TextLine(
title=_(u"Størrelse"),
)
enhed = schema.TextLine(
title=_(u"Enhed"),
)
pris = schema.TextLine(
title=_(u"Pris"),
)
@indexer(IVare)
def varenummerIndexer(obj):
"""Create a catalogue indexer, registered as an adapter, which can
populate the ``start`` index with the film's start date.
"""
return obj.varenummer
grok.global_adapter(varenummerIndexer, name="varenummer")
在catalog.xml中我定义了:
<?xml version="1.0"?>
<object name="portal_catalog" meta_type="Plone Catalog Tool">
<index name="varenummer" meta_type="FieldIndex">
<indexed_attr value="varenummer"/>
</index>
<column value="varenummer"/>
</object>
答案 0 :(得分:1)
Plone搜索字段仅使用SearchableText
索引。
这是一个全文索引,大多数类型都填充了应包含在结果中的所有字段的连接结果(字符串)。
有collective.dexteritytextindexer
package可以更轻松地为灵活类型填充SearchableText
索引。
将该包的行为添加到您的类型中:
<property name="behaviors">
<element value="collective.dexteritytextindexer.behavior.IDexterityTextIndexer" />
</property>
然后将您的varenummer
字段标记为索引的一部分:
from collective import dexteritytextindexer
class IVare(form.Schema):
"""Leverandør type, som kan oprettes alle steder.
"""
dexteritytextindexer.searchable('varenummer')
varenummer = schema.TextLine(
title=_(u"Varenummer"),
)