建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

WordPress搜索增强插件 如何实现模糊搜索?

GG网络技术分享 2025-03-18 16:04 0


WordPress默认的搜索有很多不足之处,通常只检索文章的内容和标题,不能模糊搜索。

如何才能实现模糊搜索呢?

1,用插件 Relevanssi,有免费和收费,免费的就好了,默认设置不用改,初次使用需要创建一下索引。

Relevanssi通过添加部分匹配结果并按相关性对结果进行排序来改进默认搜索。搜索结果通常在WordPress中按日期排序,并且仅包含完全匹配的结果。

特点

  • 搜索结果按相关性顺序排序,而不是按日期排序
  • 模糊匹配:如果完整单词不匹配,则匹配部分单词
  • 查找仅与一个搜索词匹配的文档(或查询)或要求所有单词都出现(与查询)的文档
  • 搜索带引号的短语,例如“搜索短语”
  • 创建自定义摘录,以显示点击的来源,并突出显示搜索词
  • 当用户单击搜索结果时,突出显示文档中的搜索词
  • 搜索评论,标签,类别和自定义字段
  • 多站点友好
  • bbPress支持
  • 古腾堡友好
请注意,因为Relevanssi需要创建索引,所以使用Relevanssi可能需要大量(数百兆)的数据库空间(为获得合理的估计,请将wp_posts数据库表的大小乘以三)。如果托管设置的数据库表空间有限,则使用Relevanssi可能会引起问题。在这些情况下,不建议使用Relevanssi。

2,用代码实现模糊搜索,将以下代码添加到主题的functions.php文件中。

///////////////////修改为模糊搜索功能////////////////////////////

add_filter( 'posts_search','wp_custom_search' );

function wp_custom_search($search){

$s=get_query_var('s');

if(!$s)return $search;//非搜索,直接返回。

$s=get_query_var('s');

//分解搜索关键字

$s_arr=mbStrSplit($s,1);

$s='';

foreach($s_arr as $a):

$s.="%".$a;

endforeach;

$search = "AND (bk_posts.post_title LIKE '{$s}%')";

// OR (bk_posts.post_content LIKE '{$s}%')

// AND (bk_posts.post_password = '')";

return $search;

}

function mbStrSplit($string, $len=1) {

$start = 0;

$strlen = mb_strlen($string);

while ($strlen) {

$array[] = mb_substr($string,$start,$len,"utf8");

$string = mb_substr($string, $len, $strlen,"utf8");

$strlen = mb_strlen($string);

}

return $array;

}

///////////////////////////////////////////////////////////////////////////

注意,某些主题可能不支持。

3, Ivory Search

Ivory Search是一个易于使用的高级WordPress搜索插件。它增强了默认的WordPress搜索,还允许您创建新的自定义搜索表单。

使用Ivory Search,您可以创建无限数量的搜索表单,并分别配置每个搜索表单以自定义WordPress搜索并在网站内容上执行不同类型的搜索。

在网站页眉、页脚、侧边栏或小工具区域、导航或菜单上,页面、文章、自定义文章类型或使用其短代码的网站上的任何位置上显示自定义搜索表单。

可以设置模糊搜索,但是不能自动分词,需要手动加空格。比如搜索“Wordpress搜索插件”,应该输入“Wordpress 搜索 插件”,才能搜到关于 “Wordpress” “搜索” “插件” 三个分词的结果。

4, WP Extended Search

WP Extended Search 插件使用最简单,界面也很简洁,虽然也不能自动分词,小编试了多个插件和方法,还是推荐用这款插件。安装启用,设置里将Terms Relation Type由AND改为OR。

标签: WordPress 教程

提交需求或反馈

Demand feedback