Relevanssi 用更出色的搜索引擎取代了标准 WordPress 搜索,该搜索引擎具有许多功能和可配置选项。您将获得更出色的结果,更出色的结果呈现效果 — 您的用户会感谢您。

安装激活 Relevanssi 搜索插件后,Relevanssi 会直接作用于默认的 WordPress 搜索框,实现 Relevanssi 自定义的搜索功能。也就是说,在前端,我们无需多余的设置即可使用 Relevanssi 插件。

请注意,使用 Relevanssi 可能需要大量(数百兆)的数据库空间(合理估算,请将wp_posts数据库表的大小乘以三)。如果您的服务器中于数据库表的磁盘空间有限,使用 Relevanssi 可能会出现问题。在这些情况下,不建议使用 Relevanssi。

主要特征

  • 搜索结果按相关性排序,而不是按日期排序。
  • 模糊匹配:如果完整单词不匹配,则匹配部分单词。
  • 查找仅匹配一个搜索词(或查询)或要求所有单词出现(与查询)的文档。
  • 搜索带引号的短语,例如“搜索短语”。
  • 创建自定义摘录,显示搜索结果的位置,并突出显示搜索词。
  • 当用户点击搜索结果时,突出显示文档中的搜索词。
  • 搜索评论、标签、类别和自定义字段。
  • 多站点友好。
  • bbPress 支持。
  • 对古腾堡友好。

高级功能

  • 调整标题、标签和评论的权重。
  • 记录查询,显示最受欢迎的查询和最近没有命中的查询。
  • 使用隐藏变量或插件设置将搜索限制在类别和标签内。
  • 索引自定义帖子类型和自定义分类法。
  • 索引短代码的内容。
  • 基于成功的用户搜索的 Google 风格“您是不是要找?”建议。
  • 支持WPML多语言插件Polylang
  • 支持s2member 会员插件会员群组简单会员和其他会员插件。
  • 高级过滤可帮助您按您想要的方式破解搜索结果。
  • 搜索结果限制以提高大型数据库的性能。
  • 使用简单的过滤器钩子禁用帖子内容和帖子标题的索引。

高级功能(仅限 Relevanssi Premium)

  • 索引附件内容(PDF、Office、Open Office)。
  • 改进了“您的意思是?”建议中的拼写更正功能。
  • 在同一个多站点安装中跨多个站点进行搜索。
  • 搜索并索引用户资料。
  • 搜索和索引分类术语页面(类别、标签、自定义分类法)。
  • 搜索并索引 wp_posts MySQL 表中的任意列。
  • 为任何帖子类型和分类法分配权重。
  • 为新帖子分配额外的权重。
  • 让用户在 AND 和 OR 搜索之间进行选择,使用 + 和 – 运算符(AND 和 NOT)。
  • 导出和导入设置。
  • WP CLI 命令
  • 相关文章
  • 重定向搜索

中文支持

Relevanssi 插件的索引功能需要把内容分词,然后进行索引,在英文内容中,内容的分词时直接用空格进行分词的,效率很高。而对于中文内容,用空格分词显然时不行的,我们需要自己实现中文分子的逻辑。下面是用 fukuball/jieba-php 实现的中文分词示例代码。

add_filter('relevanssi_remove_punctuation', function($str){
	ini_set('memory_limit', '2048M');
	ini_set('max_execution_time', '300000');

	set_time_limit(0);

	FukuballJiebaJieba::init();
	FukuballJiebaFinalseg::init();

	$string = FukuballJiebaJieba::cutForSearch($str);

	return implode(' ',$string);
});

调整索引设置

添加了以上代码后,我们还需要调整 Indexing 设置,设置 Minimum word length 的值为2,因为长度<2 的词是中文的单字,我们的网站不是新华字典,没必要对每个字进行索引。

如果索引的文章比较多,第一次建立索引时,需要的时候可能比较长,我们耐心等待他索引完就可以了,后续的索引时增量索引,就比较快了。

索引建立完成后,我们就可以愉快的使用 Relevanssi 插件了。

推荐理由

经过对比测试,使用 Relevanssi 插件实现的自定义搜索相对 WordPress 自带的来说,搜索结果上相关性更高,还可以在文章中实现搜索词的高亮功能,非常实用。