Come posso aggiungere parole chiave a SearchAbleText per un tipo di contenuto di destrezza?

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

  •  28-10-2019
  •  | 
  •  

Domanda

Ho un sito in esecuzione PLONE 4.1 che ha un tipo di contenuto personalizzato sviluppato con Destrezza 1.1. I miei autori di contenuti possono aggiungere parole chiave alle pagine PLONE di base utilizzando la scheda di categorizzazione e gli utenti trovano correttamente queste pagine se cercano utilizzando una delle parole chiave.

I miei autori di contenuti hanno anche prodotto pagine utilizzando un tipo di contenuto personalizzato Destrezza che ho sviluppato. Questo è stato definito utilizzando uno schema di file system basato su Python. Se gli utenti cercano termini nel titolo e nella descrizione di un tipo di contenuto di destrezza, ottengono le pagine di destrezza nei risultati di ricerca. Se cercano utilizzando un termine di query nel campo delle parole chiave, non ottengono risultati. Tuttavia, nell'ambito del modulo di ricerca avanzata, possono trovare la pagina di destrezza se evidenziano il tag appropriato nell'elenco dei tag.

Ho ispezionato il contenuto dell'indice di ricerca utilizzando lo strumento Portal_Catalog in ZMI. Sembra che le parole chiave vengano aggiunte al campo SearchAbleText per i tipi di contenuti di base come la pagina ma per il mio tipo di contenuto personalizzato basato sulla destrezza che non lo sono.

Devo scrivere un codice aggiuntivo per inserire i contenuti del campo delle parole chiave nell'indice SearchAbleText?

È stato utile?

Soluzione

Supponiamo che il tuo tipo di contenuto di destrezza implementa IFOO e l'attributo delle parole chiave definito nel tuo schema è un elenco di stringhe.

Definirai il tuo indicizzatore in questo modo:

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")
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top