You are here

构建一个自定义搜索页面

g089h515r806 的头像
Submitted by g089h515r806 on 星期四, 2009-08-20 14:31

老葛的Drupal培训班 Think in Drupal

Drupal内置了对节点和用户名的搜索能力。即便是你开发了一个自定义的节点类型,那么Drupal的搜索系统仍然可以索引呈现给节点视图的内容。例如,假定你有一个食谱节点类型,它包含的字段有“原料”和“用法说明”;你创建一个新的食谱节点,其节点ID为22。当有你访问http://example.com/?q=node/22, 只要管理员能够看到这些节点字段,搜索模块将在下次访cron运行期间将会索引食谱节点和它的附加元数据。
    开始你可能会觉得,节点搜索和用户搜索应该使用了同样的底层机制,事实上它们使用了两种单独的方式分别来扩展搜索功能。对于节点搜索,对于每次搜索都没有直接对node表进行查询;它使用一个索引器把内容提早处理为一种结构化的格式。在执行节点搜索时,将会对结构化的索引数据进行查询,这样就会产生更快更准确的结果。我们将在本章的后面部分学习索引器。
    用户搜索一点也不复杂,这是因为用户名只是数据库中的单个字段,搜索查询只需要对该字段进行检查就可以了。还有,用户名中不允许包含HTML,所以也不需要使用HTML索引器。替代的,你只需要使用几行代码直接对user表进行查询就可以了。
    在前面的两种情况下,Drupal的搜索模块都将实际搜索委托给了适当的模块。简单的用户名搜索位于modules/user/user.module的user_search()函数中,而复杂一点的节点搜索则位于modules/node/node.module的node_search()函数中。这里的一个重点是,搜索模块负责搜索的协调工作,它将具体的实现委托给了其它模块,这些模块最了解可搜索的内容。
 

Drupal版本: