没有Plone Dexterity类型的搜索结果

时间:2013-04-24 13:08:33

标签: plone indexer dexterity

我已经创建了一个新的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>

1 个答案:

答案 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"),
        )