前尘旧事,几孤风月,似水长眠; 世无定事,问尽风流,只为一笑
想做好几个drupal的网站,但一直对drupal的中文搜索耿耿于怀,反正不管建立没建立索引,装没装中文分词模块,只要一查中文就挂。。
上网查了一天资料,基本没有发现一个网站有用drupal本身的汉化查询,好不容易发现一个能够查询,而且风格是 /node/xx 和目录是 taxomony的,结果发现作者其实只保留了网址,其实网页已经转到了wordpress,包括台湾drupal与drupalchina,都是用的google search,我决定分析一下这个原因。
实在是对php一窍不通,但既然别人没有答案,还是硬着头皮上吧
1)查了一下后台有个本地化的模块,用中文查询一点问题没有,说明这不是php与ie的问题,一定是国外的这些专家们编程的时候漏了什么东西
2) 无奈,先查查php的语法,花了近10分钟,了解了输出是什么,而是就用找到 search_module模块,猛的加入 form_set_error这个drupal本身自带输出信息的来测试,也免得学习 php了
3) 从IE浏览器的urlencode开始,找到执行search的各个函数,一步步的测试,排除了很多可能。现在已经测试到这段代码。可能这儿有些问题。
form_set_error('key1s', t("s1"));
form_set_error('key2s', t($text));
form_set_error('key3s', t("s2"));
$text = decode_entities($text);
// Lowercase
$text = drupal_strtolower($text);
form_set_error('key4s', t("e1"));
form_set_error('key5s', t($text));
form_set_error('key6s', t("e2"));
这个将 text转化成小写的函数是不是使text消失了呢。?
评论
检查到第二个可能使中文消失的地方
$text = preg_replace('/(['. PREG_CLASS_NUMBERS .']+)['. PREG_CLASS_PUNCTUATION .']+(?=['. PREG_CLASS_NUMBERS .'])/u', '\1', $text);
// $text = preg_replace('/['. PREG_CLASS_SEARCH_EXCLUDE .']+/u', ' ', $text);
第三个可能使中文消失的地方。,再次屏蔽掉。。
我在linux环境下的drupal5.2 中文搜索可以用的 你cron.php运行了没有