放牧代码和思想
专注自然语言处理、机器学习算法
    恕不接待索要源码语料者、索求技术方案者、以及不Google的懒人。

Chapter 13: Searching and Indexing Content

目录

这一章讲解如何在模块中使用搜索API的钩子和构建自定义的搜索表单。Drupal是如何解析和索引内容的,还有就是如何实现索引器钩子。

第一个示例模块实现的是搜索URL别名,代码不贴了。需要注意的是安装了之后要激活它。操作步骤如下

首页 » 管理 » 配置 » 搜索及元数据,也就是http://127.0.0.1/drupal/#overlay=admin/config/search/settings ,将Pathfinder勾上,并且清空缓存。

第二个例子实现的是搜索数据库里非Drupal数据表,但是作者的代码假定我们的数据库中就有一张名为legacy的表,一上来就直接db_insert('technote'),会引发如下错误。我认为作者脑子进水了,随便看看就好,不必认真地跟着写。

错误

网站遇到了不可预知的错误。请稍后再试。

错误信息

PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'drupal.technote' doesn't exist: SELECT SUM(i.score * t.count) AS calculated_score FROM {search_index} i INNER JOIN {technote} t ON t.id = i.sid INNER JOIN {search_total} t_2 ON i.word = t.word WHERE ( (i.word = :db_condition_placeholder_0) )AND (i.type = :db_condition_placeholder_1) GROUP BY i.type, i.sid HAVING (COUNT(*) >= :matches) ORDER BY calculated_score DESC LIMIT 1 OFFSET 0; Array ( [:db_condition_placeholder_0] => 1 [:db_condition_placeholder_1] => technote [:matches] => 1 ) 在SelectQueryExtender->__call() (行 840G:\xampp\htdocs\drupal\includes\database\select.inc).

我本着探索的精神创建了一张legacy,给他创建好字段等着模块来插入记录。结果仍然报错,鬼知道这个数据表的结构是什么样的

转载须注明:码农场 » Chapter 13: Searching and Indexing Content

分享到:更多 ()

我的开源项目

HanLP自然语言处理包基于DoubleArrayTrie的Aho Corasick自动机