WORDPRESS 使用结巴实现搜索中文分词
详细安装及说明参考以下,已经有比较详细的教程了:
https://cloud.tencent.com/developer/article/2221841
GITHUB:https://github.com/ixqbar/phpjieba
下面说一下,几个注意点,我用的是宝塔面板,安装了几个PHP版本,因为我试了几次都没有成功,尝试了几次才成功:
1,第一次安装时,没有指定目录,默认安装到root文件夹下,可能权限问题导致错误,后来改到其它目录。
2,官方说明此插件(扩展)是支持PHP5/PHP7的,我的WORDPRESS用的是PHP7.1,不知道是不是和这个有关系,后来将PHP版本改到7.0
3,注意 指定恰当的路径:./configure –with-php-config=/usr/local/php/bin/php-config 我的PHP7.0是这样的:./configure –with-php-config=/www/server/php/70/bin/php-config
4,修改php.ini时,jieba.dict_path=/root/phpjieba/cjieba/dict ,后面的路径要用自己实际的,我的是jieba.dict_path=/www/server/phpjieba/cjieba/dict
5,如果是WORDPRESS,别忘记在functions.php中加上以下代码(当然之前操作完成,别忘了重启PHP):
function custom_search( $search_result, $wp_query ) { global $wpdb; if( !$wp_query->is_search ) { return $search_result; } if( !isset( $wp_query->query_vars ) ) { return $search_result; }$key_string=$wp_query->query_vars['s']; $keywords =jieba($key_string); if ( count( $keywords ) > 0 ) { $search_result = ''; foreach ( $keywords as $keyword ) { if ( !empty( $keyword ) ) { $keywords = '%' . esc_sql( $keyword ) . '%'; $search_result .= " AND ( {$wpdb->posts}.post_title LIKE '{$keywords}' OR {$wpdb->posts}.post_content LIKE '{$keywords}' OR {$wpdb->posts}.ID IN ( SELECT distinct post_id FROM {$wpdb->postmeta} WHERE meta_value LIKE '{$keywords}' ) ) "; } } } return $search_result; } add_filter( 'posts_search','custom_search', 10, 2 );