Как добавить ключевые слова в SearchableText для типа контента ловкости?

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

  •  28-10-2019
  •  | 
  •  

Вопрос

У меня есть сайт, управляющий PLONE 4.1, который имеет пользовательский тип контента, разработанный с помощью Dexty. 1.1. Мои авторы контента могут добавить ключевые слова к основным страницам PLONE, используя вкладку «Категоризация», и пользователи успешно находят эти страницы, если они ищут, используя одно из ключевых слов.

Мои авторы контента также произвели страницы, используя Dextory Custom Content Type I, разработанный. Это было определено с использованием схемы файловой системы на основе Python. Если пользователи ищут термины в заголовке и описании типа контента ловкости, они возвращают страницы ловкости в результатах поиска. Если они ищут, используя термин запроса в поле ключевых слов, они не получают результатов. Однако в рамках расширенного поиска они могут найти страницу ловкости, если они выделяют соответствующий тег в списке тегов.

Я проверил содержимое индекса поиска, используя инструмент Portal_Catalog в ZMI. Похоже, что ключевые слова добавляются в поле SearchableText для основных типов контента, таких как страница, но для моего пользовательского типа контента на основе ловкости они не являются.

Нужно ли написать дополнительный код, чтобы вставить содержимое поля ключевых слов в индекс SearchableText?

Это было полезно?

Решение

Допустим, ваш тип контента ловкости реализует ifoo, а атрибут ключевых слов, определенный в вашей схеме, представляет собой список строк.

Вы определяете свой индексатор таким образом:

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")
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top