【问题标题】:No search results for Plone Dexterity type没有 Plone Dexterity 类型的搜索结果
【发布时间】:2013-04-24 13:08:33
【问题描述】:

我创建了一个新的灵巧类型,该类型运行良好,并且标题很好地出现在 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>

【问题讨论】:

    标签: plone indexer dexterity


    【解决方案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"),
            )
    

    【讨论】:

    • collective.dexterityindexer 遇到的问题是它没有从我的类型中索引标题。
    • @PeterB:您没有使用标题的默认行为;在您的 IVare 定义中添加另一个 dexteritytextindexer.searchable('title') 行。
    • 啊把两篇文章混在一起——这就是我没有得到标题索引的原因。我的印象是collective.dexterityindexer 不适用于标题-因此我什至没有对其进行测试。效果很好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 2017-04-02
    • 2012-12-18
    • 1970-01-01
    • 2018-03-11
    相关资源
    最近更新 更多