Как обеспечить несколько функций поиска на веб-сайте?

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

  •  09-09-2019
  •  | 
  •  

Вопрос

Я разрабатываю веб-приложение, в котором у меня есть следующие функции поиска:

  • Обычный поиск:где пользователь введет ключевое слово поиска для поиска записей.
  • Популярный: это не своего рода поиск, он отображает популярные записи на веб-сайте, как это делает Digg и другие сайты социальных закладок.
  • Недавний: При этом я показываю недавно добавленные записи на своем веб-сайте.
  • Поиск города: Здесь я показываю пользователю названия городов, например «Дели», «Мумбаи» и т. д., и когда пользователь нажимает на эту ссылку, отображаются все записи из этого конкретного города.
  • Поиск по тегам: Так же, как и при поиске по городу, у меня есть ссылки на теги: когда пользователь нажимает на тег, ему отображаются все записи, отмеченные этим тегом.
  • Поиск по алфавиту: Как и город и тег, эта функция также имеет ссылки из букв, таких как «A», «B», ....и т. д., и когда пользователь нажимает на любую ссылку на букву, пользователю будут отображаться все записи, начинающиеся с этой конкретной буквы.

Теперь моя проблема в том, что я должен предоставить пользователю перечисленные выше поисковые запросы, но я не могу решить, использовать ли одну страницу (result.aspx), на которой будут отображаться все записи поисковых запросов, и я буду использовать строка запроса, какой поиск использует пользователь, и какие данные я должен отобразить пользователю.Например, допустим, я ищу город, Дели и тег Delhi-Hotels, тогда URL-адреса для обоих будут такими:

Для города: www.example.com/result.aspx?search_type=city&city_name=delhi

Для тегов: www.example.com/result.aspx?search_type=tag&tag_name=delhi-hotels

Для обычного поиска: www.example.com/result.aspx?search_type=normal&q=delhi+hotels+and+bar&filter=hotlsOnly

Теперь я чувствую себя выше Идея использования одной страницы для всех поисков беспорядочна.Поэтому я подумал о еще одной, более чистой идее, которая использует отдельные страницы для всех типов поиска.

Для города: www.example.com/city.aspx?name=delhi

Для тегов: www.example.com/tag.aspx?name=delhi-hotels

Для обычного поиска: www.example.com/result.aspx?q=delhi+hotels+and+bar&filter=hotlsOnly

Последние: www.example.com/recent.aspx

Для популярных: www.example.com/popular.aspx

Моя новая идея более понятна и конкретно сообщает пользователю все, какая страница для чего предназначена, а также дает ему представление о том, где он сейчас находится, какие записи он сейчас видит.Но у новой идеи есть одна проблема: если мне придется что-то изменить в отображении результатов поиска, мне придется внести изменения на всех страницах одну за другой. Я подумал, что решение этой проблемы также заключается в использовании пользовательского управления при повторителе. control, я передам все свои значения одно за другим в пользовательский элемент управления для рендеринга HTML для каждой записи.

С новой идеей все в порядке, но я все еще не могу решить, с чем мне придется идти. Может ли кто-нибудь высказать мне свои мысли по этой проблеме?

Я хочу реализовать идею, которую будет легко поддерживать, которая будет оптимизирована для SEO (обеспечит хороший рейтинг моему веб-сайту), удобна для пользователя (проста в использовании и понятна для пользователей).

Спасибо.

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

Решение

Что касается SEO, следует упомянуть одну вещь:

Поскольку многие страницы «результатов» будут ссылаться на один и тот же контент, наличие* разных URL-адресов для этих страниц дает несколько преимуществ:

  1. Некоторые поисковые системы возмущаются, если на сайте появляется дублирующийся контент или существует возможность создания почти бесконечных списков.
  2. Анализ транспортных потоков.

Итак, в качестве примера пункта 1 вы заметите, что SO имеет множество способов поиска вопросов, в том числе:

  1. На главной странице
  2. Через /вопросы
  3. Через /теги
  4. Через/без ответа
  5. Через /каналы
  6. Через /поиск

Если вы посмотрите robots.txt для SO, вы увидите, что паукам запрещено посещать (среди прочего):

Disallow: /tags
Disallow: /unanswered
Disallow: /search
Disallow: /feeds
Disallow: /questions/tagged

Таким образом, поисковая система должна найти только один маршрут к контенту, а не три или четыре.

Если они все пройдут через одну и ту же страницу, вы не сможете фильтровать таким образом.В идеале вы хотите, чтобы поисковая система индексировала список городов и тегов, но вам нужно, чтобы она проиндексировала фактические данные только один раз - скажем, из списка от А до Я.

Что касается пункта 2, при анализе трафика вашего сайта будет намного проще увидеть, как люди используют ваш сайт, если URL-адреса значимы, а результаты не скрыты в заголовке формы — многие достойные пакеты статистики позволяют вам сообщать по значениям строки запроса или если у вас есть «красивые» URL-адреса, это еще проще.Наличие такой информации также облегчит продажу рекламы, если вас это интересует.

Наконец, как я уже упоминал в комментариях к другим ответам, пользователи вполне могут захотеть добавить в закладки конкретный поиск - включение запроса тем или иным способом в URL-адрес (строки запроса или переписанный URL-адрес) является упрощенным способом сделать это.

*Я говорю «появляться», потому что, как отмечали другие, перезапись URL-адресов позволит это сделать без фактического наличия разных страниц на сервере.

Другие советы

Чтобы правильно ответить на ваш вопрос, необходимо решить несколько вопросов:

  1. Вам не обязательно перенаправляться на страницу результатов, прежде чем вы сможете обработать данные.Страница или элемент управления, который содержит интерфейс поиска при отправке, может обрабатывать отправленные параметры поиска (и тип поиска) и инициировать вызов базы данных или промежуточной веб-службы, которая предоставляет результат поиска.Затем вы можете использовать одну страницу результатов для отображения полученных данных.

  2. Если вам необходимо передать отправленные параметры поиска через строку запроса на страницу результатов, вам будет гораздо лучше использовать одну страницу результатов, которая анализирует эти параметры и условно отображает результат.

  3. Большинство пользователей не полагаются на информацию об URL-адресе/строке запроса в адресной строке браузера для определения своего текущего местоположения на веб-сайте.У вас должно быть что-то более наглядное (например, элемент управления «Хлебные крошки» или метки заголовков), чтобы указать текущее местоположение.Кроме того, как вы упомянули, здесь весьма существенен вопрос ремонтопригодности.

Я бы определенно не рекомендовал второй вариант (использование отдельных страниц результатов для каждого вида поиска).Если вас беспокоит SEO, используйте перезапись URL-адресов, чтобы создавать «слизни» URL-адресов и создавать более интуитивные пути.

Я бы придерживался исходной страницы результатов result.aspx.С точки зрения пользователя я объясняю это тем, что сам URL-адрес передает мало информации.Вам лучше создать визуальные подсказки на странице с такими словами, как «Найти X в категории Y с тегами Z».

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

Откажитесь от строк запросов и используйте перезапись URL-адресов для обработки своих «разделов».намного лучше SEO и понятнее с точки зрения закладок/читабельности для пользователя.

Город:www.example.com/city/delhi/

Ярлык:www.example.com/tag/delhi-hotels/

Недавний:www.example.com/recent/

Популярный:www.example.com/popular/

Обычный поиск можно просто перейти на www.example.com/search.aspx или что-то в этом роде.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top