WordPress 搜索增强功能的一个思路,主要目的就是处于网站搜索聚合页面的优化,其次当然就是提升网站搜索结果相关度和内容丰富程度,用 WordPress 的朋友应该都知道,WordPress 本身的搜索过于单纯,精准匹配对于网站搜索来说可能几乎搜索不到任何的内容,对于普通用户搜索也不会用关键和空格分隔的方式来搜索。
所以给我们的搜索做了巨大的升级和优化,今天主要就是分享其中一个增强 WordPress 搜索功能的思路,那就是利用 WordPress 本身的 tag 标签来作为词库,然后给搜索词做分词切割,这样做的好处是分词词库都是根据我们网站标签而来,相对而言更为准确和有效,其次是网站本身的数据接口,开发和使用起来拥有绝对的控制权,相比使用第三方分词接口或者分词词库更好的本地化了。
第三方分词当然还是能找到免费的分词接口,并且还有人开发过 WordPress 搜索分词插件,当然也还有利用开源的分词库来做了插件,但是子凡看了都不是很理想,主要就是第三方接口的稳定性和以后的发展,我可不想用着用着那天就没法用了,我不想做这种无用功,其次就是对于付费的接口,我想我暂时肯定是接受不了的,毕竟搜索这个功能属于长期运营,忽然间多出这么一部分支出当然是划不来的。
那么子凡经过再三研究和对比考虑,最后还是选择利用 WordPress 标签功能作为词库来给 WordPress 搜索做分词处理。稍微详细的开发思路如下:
1、利用 get_tags 函数获取所有函数,因为是分词所以可以设置 hide_empty 为 false,就算是空标签也可以用来做分词;
2、然后使用 wp_list_pluck 来提取标签数组中所有标签 name 名称,这样标签词库就是一个完整的数组了;
3、为了后续的开发和使用效率,子凡我用 wp_cache_set 做了缓存设置,有效期设置的一天时间,当然还可以利用其它方式做缓存等等,反正就是避免每次分词都要获取一次全部的标签,造成服务器压力和延迟;
4、最后 foreach 循环加上 strpos 开始拆分搜索词,并且记录好分词和标签关键词,根据自己实际的开发需求做后续开发即可。