首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态搜索,生成搜索结果链接(反向路由)

动态搜索,生成搜索结果链接(反向路由)
EN

Stack Overflow用户
提问于 2011-05-12 10:51:54
回答 1查看 117关注 0票数 0

只是拉皮条我的cms和试图简化一些常见的任务,如搜索。cms有许多不同的模块,每个模块都可以被动态路由屏蔽。

整个系统非常坚固,而且非常灵活,但这正是搜索结果页面令人头痛的地方。

为了保持灵活性,我将基本数据放到我的搜索类中,如下所示:

代码语言:javascript
复制
$search->addTable('content', array('title', 'excerpt', 'body', 'meta_keywords', 'meta_description'));
$search->addTable('event', array('title', 'description', 'tags'));

然后,我的search类将从这些变量生成one sql查询,这些变量将很好地找到结果(呃,也许‘word’现在不是最好的词,因为结果集包含来自不同表的行,所以我无法分辨哪一行属于哪个表,因为所有的结果都在一个数组中)

问题是,当我想要显示结果页面时,我需要为每个结果创建适当的urls,这是非常困难的,因为我前面提到的系统灵活性(任何内容/模块都可以被任何东西屏蔽)。

我知道我的问题是非常本地化的,而且可能过于模糊,无法以目前的形式回答,所以我会尽量澄清我的问题。我不会问你关于我的问题的最佳实践或简单的答案,但如果你能给我一些关于这些基本问题的好建议,我会非常感激的:

  • 似乎生成单个查询并不是最好的方法,因为我无法分辨哪一行属于哪个表(不同的表可能意味着不同的url制作方法)。另一种方法是分别查询每个表,并将结果存储在多维数组中(键的表名)。在foreach循环中查询sql的AFAIK不是一个可接受的方法。是否有可能在单个查询中标记每个结果行以反映其表名?如果我不为这些结果创建真正的(蒙面、路由)url,
  • 会伤害我的SEO吗,但是我会显示非常基本的url,比如(example.com/content/尼斯-url-slug)。谷歌可能会因为重复而惩罚我的网站--这对我来说不太好。

一如既往,请询问,而不是点击关闭,也许我可以澄清更多的情况。谢谢你,法布里克

EN

回答 1

Stack Overflow用户

发布于 2011-05-12 12:06:20

简单的回答是,只要我们不谈论几十个查询,执行多个查询是完全可以的。这也意味着返回的结果将是一组集合,结构类似于上面的数组,其中表名是该表的一组结果的关键。

我必须想一想,在代码中的某个地方,数组是组装在一起的。当它被组装时,您可以循环遍历它并准确地查询每个表一次。在该循环中,您拥有所需的所有上下文:表名。

然后,将数组返回给任何客户端,将其组装成结果。如果表名足以构造URL,则可以选择。如果您需要更多关于每个表的信息,比如其ID列的名称,请构造结果数组以包含每个表所需的元数据。

总的来说,看起来您的结构很好,并且为了避免多个查询而被绊倒了。不要担心这个。多个查询的问题是,当同一个*表*在一个循环中被一次又一次地查询时,当这是普遍的设计模式时,则是性能容器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5976904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档