WORDPRESS 使用结巴实现搜索中文分词

sadwind2024-04-08笔记2718

详细安装及说明参考以下,已经有比较详细的教程了:

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 );


relate content

VUE学习:七.单页应用

VUE学习:七.单页应用

前言SPA 单页面应用(SinglePage Web Application) ,指只有一个主页面的应用(一个 html 页面),一开始只需要加载一次 js、css 的相关资源。所有内容都包含在主页面...

VUE学习:九.模板解析

前言模板指的是每个 page 下的 html 模板文件,vue 创建项目时,默认使用单页应用配置,模板文件的作用主要用于 webpack 中 html-webpack-plugin ...

VUE学习:四.环境配置

前言前端项目开发中,一般会有几个环境:dev:是程序员们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告sit:dev 环境完成需求开发就可以将代码打包到 sit 环境...

ICMS 标签 调节器

模板标签调节器允许在任何以 $ 开头的标签中使用调节器对得到的值进行处理,形式为:modifiers调节器可带参数 参数可以是模板自带调节器,也可以是PHP的函数<!--{$...

sphinx 搜索 服务器重启后操作步骤

/www/server/sphinx-3.4.1/bin/indexer -c /www/server/sphinx-3.4.1/etc/icms.conf --all /www/server/sph...

php有内置函数array_unique可以用来删除数组中的重复值

array_unique -- 移除数组中重复的值array_unique说明array array_unique ( array array )array_unique() 接受 array 作为输...

Post Reply    

◎Welcome to participate in the discussion.