Пользовательский индекс поиска Kentico в медиатеке не добавляет индекс в поиск - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь добавить пользовательский индекс для поиска, но файл не добавляется в результаты.Это мой код для метода перестройки, он находит документы в нужной библиотеке мультимедиа, но они не возвращаются в результатах.

try
                {
                    MediaLibraryInfo library = MediaLibraryInfoProvider.GetMediaLibraryInfo("Documents", SiteContext.CurrentSiteName);

                    if (library != null)
                    {

                        var mediaFiles = MediaFileInfoProvider.GetMediaFiles().WhereEquals("FileLibraryID", library.LibraryID);// all files extension

                        List<string> files = new List<string>();

                        foreach (MediaFileInfo mediafile in mediaFiles)
                        {

                            SearchDocumentParameters documentParameters = new SearchDocumentParameters()
                            {
                                Index = srchInfo,
                                Type = SearchHelper.CUSTOM_SEARCH_INDEX,
                                Id = Guid.NewGuid().ToString(),
                                Created = mediafile.FileCreatedWhen
                            };
                            ILuceneSearchDocument doc = LuceneSearchDocumentHelper.ToLuceneSearchDocument(SearchHelper.CreateDocument(documentParameters));
                            doc.AddGeneralField(SearchFieldsConstants.CUSTOM_TITLE, mediafile.FileTitle, true, true);
                            doc.AddGeneralField("NAME", mediafile.FileName, true, true);
                            doc.AddGeneralField("DESCRIPTION", mediafile.FileDescription, true, true);

                            iw.AddDocument(doc);

                        }

                        iw.Flush();
                        iw.Optimize();
                    }
                }

                catch (Exception ex)
                {
                    EventLogProvider.LogException("CustomTextFileIndex", "Rebuild", ex);
                }

                // Always close the index writer
                finally
                {
                    iw.Close();
                }

1 Ответ

0 голосов
/ 04 декабря 2018

Строки для doc.AddGeneralField с пользовательскими ИМЕНАМИ и ОПИСАНИЕМ не будут работать с соглашением по именованию для столбцов по умолчанию в Kentico, вместо этого следует использовать следующее:

doc.AddGeneralField(SearchFieldsConstants.CUSTOM_TITLE, mediafile.FileName, true, true);
doc.AddGeneralField(SearchFieldsConstants.CUSTOM_CONTENT, mediafile.FileDescription, true, true);

Механизмы поиска по умолчанию в Kentico выиграли 't использовать любые собственные имена столбцов для своих запросов.Вы должны будете создать пользовательские запросы Lucene для этой функциональности.Если вы уже используете поля CUSTOM_TITLE или CUSTOM_CONTENT для чего-то другого, просто добавьте содержимое в это же поле, например:

doc.AddGeneralField(SearchFieldsConstants.CUSTOM_TITLE, $"{mediafile.FileTitle} {mediafile.FileName}", true, true);

Вы можете проверить, что индекс Lucene включил записи, используя инструмент под названиемЛюк, я использую версию 3.5 (4+ не будет работать с индексами Kentico) https://code.google.com/archive/p/luke/downloads

...