Wie füge ich SearchableText für einen Geschicklichkeitsinhaltstyp Keywords hinzu?

StackOverflow https://stackoverflow.com/questions/8852132

  •  28-10-2019
  •  | 
  •  

Frage

Ich habe eine Site mit Plone 4.1 mit einem benutzerdefinierten Inhaltstyp mit der Geschicklichkeit 1.1. Meine Content -Autoren können grundlegende Plone -Seiten mit der Registerkarte Kategorisierung Schlüsselwörter hinzufügen, und Benutzer finden diese Seiten erfolgreich, wenn sie mit einem der Schlüsselwörter suchen.

Meine Content -Autoren haben auch Seiten mit einem Geschicklichkeits -benutzerdefinierten Inhaltstyp hergestellt, das ich entwickelt habe. Dies wurde unter Verwendung eines Python-basierten Dateisystemschemas definiert. Wenn Benutzer im Titel und Beschreibung eines Geschicklichkeitsinhaltstyps nach Begriffen suchen, erhalten sie die Geschicklichkeitsseiten in den Suchergebnissen zurück. Wenn sie im Feld Keywords mit einem Abfragebegriff suchen, erhalten sie keine Ergebnisse. Unter dem erweiterten Suchformular finden Sie jedoch die Geschicklichkeitsseite, wenn sie das entsprechende Tag in der Liste der Tags hervorheben.

Ich habe den Inhalt des Suchindex mit dem Portal_Catalog -Tool in ZMI untersucht. Es wird angezeigt, dass Schlüsselwörter für grundlegende Inhaltstypen wie Seite zum Feld SearchableText hinzugefügt werden, aber für meinen geschingtenbasierten benutzerdefinierten Inhaltstyp sind sie nicht.

Muss ich zusätzlichen Code schreiben, um den Inhalt des Feldes Keywords in den SearchableText -Index einzufügen?

War es hilfreich?

Lösung

Nehmen wir an, Ihr Geschicklichkeitsinhaltstyp implementiert IFOO, und das in Ihrem Schema definierte Schlüsselwörterattribut ist eine Liste von Zeichenfolgen.

Sie definieren Ihren Indexer auf diese Weise:

from five import grok
from plone.indexer.decorator import indexer
from my.dexteritycontent.foo import IFoo

@indexer(IFoo)
def searchableIndexer(context):
    keywords = " ".join(context.keywords)
    return "%s %s %s" % (context.title, context.description, keywords)

grok.global_adapter(searchableIndexer, name="SearchableText")
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top