WordPress使用Elasticsearch自建搜索-教程

  • A+
所属分类:技术分享

由于wordpress自带的搜索貌似只能搜标题的一些关键词,很难做到全文匹配。如果文章比较多,需要进行全文搜索的话,我们就可以整合Elasticsearch方案,做比较专业的索引来达到真正的全文搜索的功能。

安装Elasticsearch

虚拟机和线上环境都是 Ubuntu 14.04.4 LTS,Elasticsearch 用的是最新版。一切开始之前,先要检查机器上是否装有 java 环境,如果没有可以通过以下命令安装:

下载 Elasticsearch 2.3.0 压缩包并解压:

将解压得到的 elasticsearch-2.3.0 目录重命名为 ~/es_root(名称及位置没有限制,可以将它挪到你认为合适的任何位置)。Elasticsearch 无需安装,直接可以运行(注意:不能用 root 帐号运行):

如果屏幕上没有打印错误信息,说明 Elasticsearch 服务已经成功启动。新建一个终端,用 curl 验证下:

如果看到以上信息,说明一切正常,否则请根据屏幕上的错误信息查找原因。尽管 Elasticsearch 本身是用 java 写的,但它对外可以通过 RESTful 接口交互,十分方便。

默认情况下 Elasticsearch 的 RESTful 服务只有本机才能访问,也就是说无法从主机访问虚拟机中的服务。为了方便调试,可以修改 ~/es_root/config/elasticsearch.yml 文件,加入以下两行:

但线上环境千万不要这样配置,否则任何人都可以通过这个接口修改你的数据。

安装 IK Analysis

首先,下载与 Elasticsearch 匹配的 elasticsearch-analysis-ik 插件:

解压后,进入插件源码目录编译:

 

如果一切顺利,在 target/releases/ 目录下可以找到编好的文件。将其解压并拷到 ~/es_root 对应目录:

elasticsearch-analysis-ik 的配置文件在 ~/es_root/plugins/ik/config/ik/ 目录,很多都是词表,直接用文本编辑器打开就可以修改,改完记得保存为 utf-8 格式。

现在再启动 Elasticsearch 服务,如果看到类似下面这样的信息,说明 IK Analysis 插件已经装好了:

配置同义词

Elasticsearch 自带一个名为 synonym 的同义词 filter。为了能让 IK 和 synonym 同时工作,我们需要定义新的 analyzer,用 IK 做 tokenizer,synonym 做 filter。听上去很复杂,实际上要做的只是加一段配置。

打开 ~/es_root/config/elasticsearch.yml 文件,加入以下配置:

以上配置定义了 ik_syno 和 ik_syno_smart 这两个新的 analyzer,分别对应 IK 的 ik_max_word 和 ik_smart 两种分词策略。根据 IK 的文档,二者区别如下:

  • ik_max_word:会将文本做最细粒度的拆分,会穷尽各种可能的组合;
  • ik_smart:会将文本做最粗粒度的拆分;

ik_syno 和 ik_syno_smart 都会使用 synonym filter 实现同义词转换。为了方便后续测试,建议创建 ~/es_root/config/analysis/synonym.txt 文件,输入一些同义词并存为 utf-8 格式。例如:

WordPress插件:

1、ElasticPress:https://wordpress.org/plugins/elasticpress

2、WP Search with Elasticsearch:https://wordpress.org/plugins/db-search-with-elasticsearch

这两款Elasticsearch WordPress 插件,都是可以帮助我们将Elasticsearch搜索整合到Wordpress,首先是激活插件,然后到插件设置页面填写Elasticsearch服务器相关的信息

Wordpress使用Elasticsearch自建搜索-教程

然后就可以将Wordpress的文章以及页面同步到Elasticsearch服务器并开始索引了。

Wordpress使用Elasticsearch自建搜索-教程

echo少年

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  1   博主  1

    • avatar wordpress建站 0

      wordpress自建搜索,感觉太麻烦了,自带有搜索的呢