Как отключить поиск по индексу в списке и просто проиндексировать статьи в результатах поиска?

Используя приложение 2sxc Blogg App и поиск, я получаю результаты указанной домашней страницы блога, в которых просто перечисляется главная страница блога и заголовки статей, которые перенаправляют пользователя на домашнюю страницу блога, так что это в значительной степени бесполезные ссылки, тогда я получить актуальные статьи со ссылками на статьи. Поэтому мне нужно подавить саму страницу блога, но не ее динамические дочерние элементы (статьи).

/ help ‹- нет, спасибо, ваши ссылки бесполезны.
/ help / post‹ - да, перечислите все.

Есть идеи, как я могу этого добиться? Меня направили в документ CustomizeData (), но я понятия не имею, что делать. Текущий набор на главной странице списка блогов выглядит следующим образом:

@functions{
    /// <summary>
    /// Populate the search - ensure that each entity has an own url/page
    /// </summary>
    /// <param name="searchInfos"></param>
    /// <param name="moduleInfo"></param>
    /// <param name="startDate"></param>
    public override void CustomizeSearch(Dictionary<string, List<ToSic.SexyContent.Search.ISearchInfo>> searchInfos, DotNetNuke.Entities.Modules.ModuleInfo moduleInfo, DateTime startDate)
    {
        foreach (var si in searchInfos["SearchIndex"])
        {
            si.QueryString = "post=" + AsDynamic(si.Entity).UrlKey;
        }
    }
}

person DNNdiva    schedule 07.08.2019    source источник


Ответы (1)


добро пожаловать в StackOverflow;)

Базовый индекс DNN запрашивает у каждого модуля данные, которые у него есть, а затем на их основе строит индекс. Поскольку модуль может иметь несколько элементов для поиска, каждый из них является собственным «документом», который можно настроить - например, какой URL-адрес использовать в результатах поиска. Чтобы разработчики представлений могли настраивать эти вещи, 2sxc имеет этот крючок для настройки результатов поиска. Итак, как это должно работать ...

  1. бэкэнд собирает данные
  2. затем обнаруживает, что создается поисковый индекс (а не пользователь, просматривающий страницу)
  3. затем вызовите код для дополнительной реконфигурации
  4. затем передайте элементы в поиск DNN

Итак, что код должен сделать, это взять каждый элемент в том виде, в каком он был подготовлен серверной частью, изменить URL-адрес для использования, а затем позволить остальной системе творить чудеса. Если это не работает, есть несколько возможностей:

  1. что-то в DNN или 2sxc сломано (очень надеюсь, что это не так)
  2. код вызвал ошибки, и, поскольку это происходит в фоновом режиме, вы этого не видите
  3. данные не передаются в код, например, потому что они были отфильтрованы - например, старые данные не обновляются в индексе, потому что индексатор будет запрашивать только новые данные, и поэтому старые данные не будут обновляться при нормальном повторном индексировании, независимо от того, как вы обновляете код.

Попробуем выяснить, в чем причина

  1. откройте запрос приложения https://azing.org/2sxc/r/T1GdqnNa и выберите ** Blog Posts for Home and Tags "и протестируйте запрос, чтобы узнать, дает ли он результаты. Если нет, то с запросом что-то не так. В результатах теста на экране, выглядящих как json, проверьте, не что-то есть в наборе SearchIndex - это поток данных, который пропускает разбиение на страницы и возвращает все элементы. Если он пуст, вернитесь к нам. Примечание: если вы не получили никаких результатов, проверьте, что Параметры теста, которые использует запрос (поле справа), и, возможно, отредактируйте ModuleId, если он неправильный
  2. проверьте, видите ли вы какие-либо события в журнале событий DNN. если вы этого не сделаете, убедитесь, что вы повторно проиндексировали все данные в DNN, и проверьте еще раз.

Опубликуйте свои результаты, чтобы мы могли проверить, как это можно исправить;)

person iJungleBoy    schedule 13.08.2019
comment
Слишком велико для количества символов здесь ... Итак ... 2sxclog - dnndiva.repl .co / 001.html Я на всякий случай запустил переиндексирование. - person DNNdiva; 15.08.2019
comment
Итак, запрос выглядит правильным. Что вы получили после переиндексации? теперь он отображается правильно? - person iJungleBoy; 19.08.2019
comment
Это то, что видно после переиндексации. Но поиск по-прежнему возвращает результаты страницы справки (главная страница блога) плюс каждая статья, в то время как я хотел бы получить результаты только для каждой статьи. - person DNNdiva; 21.08.2019
comment
Я уверен, что понимаю - теперь у вас есть правильные совпадения + дом (который вы хотели бы удалить) - это правильно? - person iJungleBoy; 22.08.2019
comment
У меня всегда были правильные совпадения (как и во всех статьях), но я не хочу, чтобы элементы списка домашней страницы блога возвращались при поиске. См .: 2sxclog--dnndiva.repl.co/002.html - person DNNdiva; 23.08.2019
comment
Тогда это хорошо. Основные совпадения все еще там, потому что мы только изменили поток SearchIndex (содержащий все), но первые 10 или около того также находятся в потоке по умолчанию, которые все еще индексируются. Лучше всего удалить этот поток, возможно, что-то вроде searchInfos.Remove("Default") и, возможно, еще 2-3 потока. - person iJungleBoy; 26.08.2019
comment
OMGourd! Это сработало! Ты так здорово зажигаешь, iJungleBoy! Для новичков ... Как и было предложено, я добавил строку searchInfos.Remove("Default"); чуть выше строки si.QueryString. Примерно так: 2sxclog--dnndiva.repl.co/003.html - person DNNdiva; 26.08.2019
comment
Обратите внимание, что я бы поставил его перед строкой foreach или после {} строки foreach, поскольку его не нужно повторять много раз :) - person iJungleBoy; 27.08.2019
comment
О, намного лучше. Спасибо. Я обновил код на образце. знак равно - person DNNdiva; 27.08.2019