终于将Lucene集成到中文WordPress中了,实现了中文博客的全文搜索。作为一个搞NLP的博主,如果还在用SQL的LIKE做搜索,那也太不上档次了。这次集成主要难点在于
①PHP平台上并没有一款成熟的分词套件。
②Lucene的PHP Port只有Zend_Search_Lucene一家,其对中文的支持非常糟糕,默认编码是ANSII;而且代码内部有不少错误,比如静态方法调用非静态成员。
③BAE对程序执行时间有限制,因此长文章必须忍痛割爱。
下面谈谈问题的解决以及整个实现过程。
一、Lucene的集成
wpsearch插件是WordPress上的Lucene集成插件,不过不要高兴得太早。wpsearch已经2年多没有更新,并且不支持中文。解决思路是去Zend的发行包里提取下列文件:
Zend
│ Exception.php
│ tree.txt
│ Version.txt
│
├─Search
│ │ Exception.php
│ │ Lucene.php
│ │
│ └─Lucene
│ │ Document.php
│ │ Exception.php
│ │ Field.php
│ │ FSM.php
│ │ FSMAction.php
│ │ Interface.php
│ │ LockManager.php
│ │ MultiSearcher.php
│ │ Pri