Полнотекстовый поиск в прикрепленных документах в Kentico CMS 7

Есть ли способ поиска вложений и отображения вложенных документов в результатах поиска? В результатах поиска должны отображаться только те вложения, в которых содержится искомый текст. Прямо сейчас я могу искать вложения, и отображается страница, на которой вложение содержит поисковый текст. Скажем, у меня есть домашняя страница и вложение myattachment.docx в качестве вложения. При поиске «Фон» в качестве текста поиска в поиске по сайту, который содержится только в файле myattachment.docx (не содержится на домашней странице), в результатах поиска отображается домашняя страница. Я собираюсь вернуть в результате что-то вроде Home/myattachment.docx вместо домашней страницы. Моя страница может иметь любое количество вложений.

Заранее спасибо!


person Manish    schedule 20.12.2012    source источник


Ответы (1)


Информация об этом немного эскиз. См. ниже документацию, которую я использовал.

Создайте собственный глобальный обработчик событий в AppCode (или Old_App_Code), убедитесь, что это частичный класс загрузчика CMSModule.

Добавьте свой собственный обработчик событий в переопределенный Init(). Вам нужен DocumentEvents.GetContent.Execute.

Объект-отправитель должен быть текущим TreeNode, индексируемым для поиска. Затем вы можете использовать этот узел для доступа к соответствующим вложениям и изменить аргументы события e.content, чтобы добавить текст вашего документа в поиск.

[CustomDocumentEvents]
public partial class CMSModuleLoader
{
    private class CustomDocumentEventsAttribute : CMSLoaderAttribute
    {
        public override void Init()
        {
            // Assigns custom handlers to the appropriate events
            DocumentEvents.GetContent.Execute += Document_GetContent;
        }

        private void Document_GetContent(object sender, DocumentEventArgs e)
        {
            TreeNode node = sender as TreeNode;
            if (node != null)
            {
                //Note, this is psuedo code, this isnt the way to iterate over TreeNode.Attachments
                foreach( attachment in node.Attachments ) {
                    e.Content += attachment.content;
                }
            }
        }

    }
}

Больше информации

См. http://devnet.kentico.com/docs/devguide/index.html?event_handlers_overview.htm для реализации пользовательских событий в целом в версии 7.

См. это для пользовательского поиска в версии 5 http://devnet.kentico.com/Knowledge-Base/Search/How-to-search-for-documents-using-assigned-categor.aspx

См. http://devnet.kentico.com/Knowledge-Base/API-and-Internals/Custom-Handler-Library-compatibility.aspx для обновленного имени события для версии 7, упомянутого в примере пользовательского поиска версии 5.

person Jono    schedule 11.09.2013