¿Cómo agrego palabras clave a SearchApletext para un tipo de contenido de Dexterity?

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

  •  28-10-2019
  •  | 
  •  

Pregunta

Tengo un sitio que ejecuta Plone 4.1 que tiene un tipo de contenido personalizado desarrollado con Delterity 1.1. Los autores de mi contenido pueden agregar palabras clave a las páginas de Plone básicas utilizando la pestaña Categorización y los usuarios encuentran con éxito estas páginas si buscan usando una de las palabras clave.

Mis autores de contenido también han producido páginas utilizando un contenido personalizado de Dexterity Tipo I desarrollado. Esto se definió utilizando un esquema del sistema de archivos basado en Python. Si los usuarios buscan términos en el título y la descripción de un tipo de contenido de Dexterity, recuperan las páginas de Dexterity en los resultados de búsqueda. Si buscan usar un término de consulta en el campo Palabras clave, no obtienen resultados. Sin embargo, en el formulario de búsqueda avanzado, pueden encontrar la página de Dexteridad si destacan la etiqueta apropiada en la lista de etiquetas.

He inspeccionado el contenido del índice de búsqueda utilizando la herramienta Portal_Catalog en ZMI. Parece que las palabras clave se están agregando al campo SearchApLetext para los tipos de contenido básico como la página, pero para mi tipo de contenido personalizado basado en la destreza, no lo son.

¿Necesito escribir un código adicional para insertar el contenido del campo Palabras clave en el índice SearchableText?

¿Fue útil?

Solución

Supongamos que su tipo de contenido de Delterity implementa IFOO, y el atributo de palabras clave definidas en su esquema es una lista de cadenas.

Defina a su indexador de esta manera:

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")
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top