1

我正在开发一个 Web 应用程序,其中我具有以下类型的搜索功能;

  • 普通搜索:用户将在其中输入搜索关键字以搜索记录。
  • 流行:这不是一种搜索,它会显示网站上的流行记录,就像 digg 和其他社交书签网站一样。
  • 最近:在此我在我的网站中显示最近添加的记录。
  • 城市搜索:在这里,我向用户显示城市名称,例如“德里”、“孟买”等,当用户单击此链接时,将显示该特定城市的所有记录。
  • 标签搜索:与城市搜索相同,我有标签链接,当用户单击标签时,所有标有该标签的记录都将显示给用户。
  • 字母搜索:与城市和标签相同,此功能还具有诸如“A”、“B”、....等字母的链接,当用户单击任何字母链接时,所有以该特定字母开头的记录都将显示给用户

现在,我的问题是我必须向用户提供上面列出的搜索,但我无法决定我将使用一个页面 (result.aspx) 来显示所有搜索记录,我将使用查询字符串,用户正在使用哪个搜索以及我必须向用户显示哪些数据。例如,假设我正在搜索 city、delhi 和 tag 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

我的新想法更清晰,它明确地告诉用户哪个页面是做什么的,它也让他知道他现在在哪里,他现在看到了什么记录。但是这个新想法有一个问题,如果我必须更改搜索结果显示中的任何内容,那么我必须在所有页面中一一进行更改,我认为这个问题的解决方案也是,即在转发器下使用用户控制控件,我将把我的所有值一一传递给用户控件,以便为每条记录呈现 HTML。

新的想法一切都很好,但我仍然无法决定我必须去哪一个,谁能告诉我你对这个问题的想法。

我想实现一个易于维护、SEO 友好(为我的网站提供良好排名)、用户友好(易于使用和用户理解)的想法

谢谢。

4

4 回答 4

2

在 SEO 方面要提一件事:

由于许多“结果”页面将链接到相同的内容,因此为这些页面显示*具有不同的 URL 有几个优点:

  1. 如果您在网站上似乎有重复的内容,或者如果有几乎无限的列表的可能性,一些搜索引擎会被交叉。
  2. 分析交通流量。

因此,以第 1 点为例,您会注意到 SO 有多种查找问题的方法,包括:

  1. 在主页上
  2. 通过/问题
  3. 通过/标签
  4. 通过/未回答
  5. 通过 /feeds
  6. 通过/搜索

如果您查看 SO 的 robots.txt,您会发现不允许蜘蛛访问(除其他外):

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

所以搜索引擎应该只找到一条到达内容的路径,而不是三四条。

让他们都通过同一个页面不允许你像这样过滤。理想情况下,您希望搜索引擎为城市和标签列表编制索引,但您只需要它为实际详细信息编制一次索引 - 例如从 A 到 Z 列表。

对于第 2 点,在分析您的网站流量时,如果 URL 有意义并且结果没有隐藏在表单标题中,那么查看人们如何使用您的网站会容易得多 - 许多体面的统计数据包允许您报告在查询字符串值上,或者如果你有“好”的网址,这更容易。如果您对此感兴趣,拥有此类信息也将使销售广告变得更容易。

最后,正如我在对其他回复的评论中提到的那样,用户可能希望为特定搜索添加书签 - 将查询以一种或另一种方式(查询字符串或重写的 url)烘焙到 URL 中是允许此操作的 simiplist 方式。

*我说“出现”是因为正如其他人所指出的那样,URL 重写可以实现这一点,而实际上服务器上没有不同的页面。

于 2009-02-26T10:59:21.297 回答
1

有几个问题需要解决才能正确回答您的问题:

  1. 在能够处理数据之前,您不一定需要重定向到结果页面。包含提交时搜索接口的页面或控件可以处理提交的搜索参数(和搜索类型)并启动对提供搜索结果的数据库或中间 Web 服务的调用。然后,您可以使用单个结果页面来显示检索到的数据。

  2. 如果您必须通过查询字符串将提交的搜索参数传递给结果页面,那么您最好使用单个结果页面来解析这些参数并有条件地显示结果。

  3. 大多数用户不依赖浏览器地址栏中的 url/querystring 信息来识别他们在网站中的当前位置。您应该有一些更具视觉指示性的东西(例如面包屑控件或标题标签)来指示当前位置。此外,正如您所提到的,可维护性问题在这里非常重要。

我绝对不会推荐第二种选择(对每种搜索使用单独的结果页面)。如果您关心 SEO,请使用 URL 重写来构建 URL“slugs”以创建更直观的路径。

于 2009-02-26T07:19:11.170 回答
0

我会坚持原来的 result.aspx 结果页面。从用户的角度来看,我的理由是实际的 URL 本身传达的信息很少。您最好在页面上创建视觉提示,说明“使用标签 Z 在类别 Y 中搜索 X”之类的内容。

至于编码和维护,因为除了类别之外的所有内容都非常相似,因此明智的做法是将其保存在一个紧凑的小包中。正如你提出的第二个想法那样打破它只会使不需要复杂的事情复杂化。

于 2009-02-26T07:02:58.477 回答
0

抛弃查询字符串并使用 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 什么的。

于 2009-02-26T07:12:06.880 回答