2016年2月2日星期二

wordpress solr 中文搜索

wordpress的搜索功能不太好用,要说中文搜索,那基本上就等于没有,因为wordpress用的sql语句拼出来的查询条件,碰到中文,那就不行了。

还好,wordpress支持solr搜索,solr本身是可以配置成支持中文搜索的,这里就把大概的配置过程梳理一下。

首先,当然要安装好wordpress,然后要配置好“固定链接”。这一步很重要,因为我们用到的wpsolr插件,依赖这个功能。当初我就没配置好这个,造成了搜索页面没有显示出来。虽然作者的FAQ第一条就是这个,但是还是没注意。要配置固定链接,需要调整apache的配置,AllowOverride All ,类似这种配置,请自行谷歌。

然后就是安装solr,首先要安装java,请自行谷歌安装方法。
然后按照solr官方的操作步骤,先下载solr的zip压缩包,然后启动solr
solr start
再运行
solr create -c wpcore -d {solr_path}/example/files/conf/ ,这样就生成了solr的一个core.

然后就是按照wpsolr里面的solr 安装文档
http://wpsolr.com/installation-guide/
把schema.xml , solrconfig.xml , 上传到 {solr_path}/server/solr/wpcore/conf 下面去。

接着我们要配置中文分词,我们可以使用https://github.com/hankcs/hanlp-solr-plugin 的中文分词,按照项目帮助,将hanlp-portable.jar和hanlp-solr-plugin.jar共两个jar放入${webapp}/WEB-INF/lib下

之后,要修改schema.xml
把text, text_ws, text_lws, textTight, textSpell 等filetype 都改成下面这个样子,注意哦, 原来的positionIncrementGap之类的要去掉。
<fieldType name="text" class="solr.TextField">
<analyzer type="index" enableIndexMode="true" class="com.hankcs.lucene.HanLPAnalyzer"/>
<analyzer type="query" enableIndexMode="true" class="com.hankcs.lucene.HanLPAnalyzer"/>
        </fieldType>
然后重启solr

接下来,在wordpress里面安装配置wpsolr,然后配置连接solr的参数,就能看到效果啦。

不过默认wpsolr的搜索结果高亮不明显,是因为用了默认的<b>,我们给他换成更显眼的高亮方式,要修改wp-content/plugins/wpsolr-search-engine/classes/solr/wpsolr-search-solr-client.php

const DEFAULT_HIGHLIGHTING_PREFIX = '<b>';

const DEFAULT_HIGHLIGHTING_POSFIX = '</b>';
改成
const DEFAULT_HIGHLIGHTING_PREFIX = '<span style="background-color: #FFFF00">';
const DEFAULT_HIGHLIGHTING_POSFIX = '</span>';

最后,由于gfw的问题,需要停止recaptcha的引用,修改dashboard_settings.php
注释掉如下的语句
//wp_enqueue_script( 'google-api-recaptcha', '//www.google.com/recaptcha/api.js', array() );

修改完了重启apache。

然后就能看到效果啦。我这里实现了搜索高亮,搜索词推荐,效果还是挺好的。

没有评论: