Поиск и навигация – нажмите отслеживание

Если вы внедряете поиск и навигацию (он же нахождение), но не можете использовать «унифицированный поиск», вам необходимо будет реализовать свое собственное отслеживание на стороне сервера. Существует ряд блогов, которые затрагивают эту тему, но многие устарели, и ни один из них не захватывает 100% требований.

Если вы не получите все правильно, вполне вероятно, что вы увидите все нули для «скорости кликов» в CMS:

Следующее поможет любому, кому нужно обслуживать:

  • Многосайтные настройки

  • Точная отчетность по «самым частым поискам»

  • Точная отчетность по «поискам без ударов»

  • Точная отчетность по «поискам без соответствующих ударов»

  • Точная отчетность ‘Люди, которые искали ‘Фу‘Также искал…

Обратите внимание, я понимаю, что поиск и навигация вроде ‘ по выходу (В пользу графика) Но, надеюсь, это все равно будет иметь некоторое использование.

Обзор

Такой подход:

  1. Захватывает и подчиняет поисковый запрос

  2. Зажигает «событие трека» для запроса

  3. Добавляет информацию о отслеживании (из события трека) к каждому URL -адресу результата поиска

  4. Когда результат поиска нажимается, это запускает событие по маршруту отслеживания – /Go.

  5. Информация о отслеживании читается из параметров запроса

  6. Событие отслеживания запускается для события Click, передающего параметры запроса

  7. Запрос перенаправлен на страницу результатов поиска

Получить результат поиска

var searchResult = await ServiceLocator.Current.GetInstance()
            .Search(“en”)
            .For(“foo”)    
            .Take(20)
            .GetResultAsync();

Отслеживать запрос

var tags = _tagsHelper.GetTags(false).ToList();
var trackResult = await ServiceLocator.Current.GetInstance().Statistics().TrackQueryAsync(query.Query.ToLower(), c =>
                {
                    c.Id = new TrackContext().Id;
                    c.Query.Hits = searchResult.TotalMatching;
                    // c.Tags = _tagsHelper.GetTags(false).ToList();   -- don't do this here!
                    c.Tags = tags;
                }));

Что следует отметить:

  • теги Захватит текущий сайт, язык и категории

  • Не оценивайте теги в командном действии TrackQueryAsync. Это проблема в многовестных экземплярах. Каким -то образом, когда вы оцениваете теги из действия команды, идентификатор сайта всегда разрешается на веб -сайте с доменом подстановочного знака. Рассмотрим это, если у вас есть несколько сайтов, разделяющих один и тот же код поиска.

  • C.ID = new TrackContext (). ID; – Это используется для установки идентификатора для пользователя – необходимо определить, какие аналогичные пользователи также искали и на что они нажали – это может быть выявлено через _searchclient.statistics () ?. getDyoumeanasync ()

Read more:  Новый стабилизатор DJI обеспечивает отслеживание домашних животных и улучшенное панорамирование видео

Добавить информацию о отслеживании в URL -адреса результата

var trackedUrls = new List();
var resultList = searchResult.Hits.ToList();
for (int x = 0; x < resultList.Count; x ++)
{
    var trackedUrl = $"https://www.mysite.com/" +
                     $"?query={System.Web.HttpUtility.UrlEncode(query)}" +
                     $"&trackid={trackResult.TrackId}" +
                     $"&hitid={resultList[x].Id}" +
                     $"&hittype={resultList[x].Type}" +
                     $"&trackuuid={trackResult.TrackUUId}" +
                     $"&trackhitpos={x +1}" +
                     $"&page="{resultList[x].Document.LinkURL};
    trackedUrls.Add(trackedUrl);   
}

Пример:

https://www.my-site.com/search/go/?query=my+query&trackid=yn8aqddsjeuof_p2uwvmg==&hitid=_507f0cdd-71b6-41ac-80ee-88 bd90ddbac1_en & hittype = mysite_pages_standardpage & trackuuid = anbj4es_rgs_kab0pandea & trackhitpos = 5 & page =/blog/article-one

Что следует отметить:

Отслеживание кликов / хитов

  [HttpGet]
  [Route("go")]
  public async Task Go(
      [FromQuery] string query,
      [FromQuery] string trackid,
      [FromQuery] string hitid,
      [FromQuery] string hittype,
      [FromQuery] string trackuuid,
      [FromQuery] string trackhitpos,
      [FromQuery] string page)
  {
      Task.Run(async () =>
      {
          var locator = ServiceLocator.Current;
          var hitIdFormatted = $"{hittype}/{hitid}";
          var tags = locator.GetInstance().GetTags(false).ToList();
      
          await locator.GetInstance().Statistics().TrackHitAsync(
              queryString: query,
              hitId: hitIdFormatted,
              command =>
              {
                  command.Id = trackid;
                  command.Hit.Id = hitIdFormatted;
                  command.Tags = tags;
                  command.Hit.QueryString = System.Web.HttpUtility.UrlDecode(query ?? string.Empty);
                  command.Hit.Position = int.TryParse(trackhitpos ?? "0", out var pos) ? pos : 0;
                  command.AdditionalParameters = new AttributeDictionary() { { Uuid, trackuuid } };
              });
      });
    
      return this.Redirect(page);
  }

Что следует отметить:

  • Используя «task.run» здесь, мы реализуем стратегию «огня и самого»; Мы не ждем, что отслеживание достигнет успеха, прежде чем перенаправить пользователя-это улучшает производительность / пользовательский опыт. Другие/лучшие способы решения этой проблемы могут быть через фоновую службу или очередь. Некоторая обработка ошибок и регистрация также была бы хорошей идеей.

Со всем этим вы должны увидеть правильную статистику, которая начинает катиться.

Image-20250721-060906.png

GOTCHAS:

  • Обрезать и строить термин поиска, чтобы предотвратить отслеживание различных запросов и щелчков для эффективного одного и того же

  • Браузеры на основе хрома могут предварительно предварительно предназначать ссылки на вашей странице через API правил спекуляций. Это может привести к тому, что отслеживание щелчка будет запущено, даже если пользователь не нажимает на результат – предложите вам отключить это на странице результатов поиска.

  • Боты также могут ползти на вашей странице и зарегистрировать клики. Одним из способов обойти это может быть только отслеживать запросы, где домен рефералов является вашим собственным сайтом.

  • Пользователи, которые нажимают «обратно» через браузер, запустили второй запрос и искажают результат – чтобы обойти это, вы можете кэшировать результат для запроса на основе уникального ключа для запроса и пользователя –
    var cachekey = new TrackContext (). id + request.queryString + request.host;

Read more:  Поиск Google может измениться навсегда в Великобритании

21 июля 2025 года

По теме

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.