Joomla!-开源天空

2008-12-05
首页 专栏热点 Joomla! 源代码分析 让Joomla! 支持中文全文检索,搜索结果反显


让Joomla! 支持中文全文检索,搜索结果反显

E-mail

按照文档中说明,使用highlightMatches 应该可以解决,可是无论如何,用了这个函数后,出来的都是乱码,到底问题出在哪里,我也没查清楚,用其他的方式解决了,不过很笨。如果你不了解Phpbean_Lucene_Analyzer,请看这篇文章:Zend_Search_Lucene 如何支持中文检索

 首先,将查询关键词进行分词,代码如下:



        $stopWords = array('a', 'an', 'at', 'the', 'and', 'or', 'is', 'am'); 
        $stopWordsFilter = new Zend_Search_Lucene_Analysis_TokenFilter_StopWords($stopWords); 
        $analyzer = new Phpbean_Lucene_Analyzer(); 
        $cnStopWords = array('的'); 
        $analyzer->setCnStopWords($cnStopWords); 
        $analyzer->addFilter($stopWordsFilter); 
        $value = $item->title; 
        $analyzer->setInput($value, 'utf-8'); 
         
        $position     = 0; 
        $tokenCounter = 0; 
        while (($token = $analyzer->nextToken()) !== null) { 
            $tokenCounter++; 
            $tokens[] = $token; 
            JString::str_ireplace($token,'<font color="CC0033">'.$token."</font>",$content);
        } 
        print_r($tokens);

代码本身很简单,首先对查询关键词进行分词,然后针对每个词,在$content的内容中进行反显替换。这只是一个变通的解决方案,要真正解决,还是好好看看highlightMatches 的代码。我估计还是因为字符集的原因。

相关文章:
zend_mail使用例程
自动生成Joomla!文章的TAG标签
Zend_DB读取Joomla!文章表的例程
Zend Framework获得Jolt 大奖
修改mod_search以支持中文全文检索组件com_lsearch
Zend_Lucene中文全文检索Joomla!组件com_lsearch
看到了织梦分词算法,打算用来改进一下ZEND
让Joomla! 支持中文全文检索,搜索结果分页
让Joomla! 支持中文全文检索,中文分词的排错
让Joomla! 支持中文全文检索,利用索引查询


收藏此文章:
Digg! Reddit! Del.icio.us! JoomlaVote! Google! Live! Facebook! StumbleUpon! Yahoo! Free social bookmarking plugins and extensions for Joomla! websites!
User Reviews(1)
 反显还是有问题
作者:KOKO 星期四, 06 三月 2008 20:00
比如,我输入 “模块 开发” 这样的查询结果没问题,但是文字反显不对。

发表您的文章评论

您的姓名 (昵称)
标题:
评分: 很差一般较好很好
评论:
验证码:
请输入验证码