Phabricator 配置 ElasticSearch 以及中文分词

自从去年使用 Phabricator 进行项目管理以来,感觉还是挺爽的。这个产品最大的特点是灵活,各个模块之间都是关联应用的关系,不是严格的依赖关系。这种设定非常适合我们目前的项目。最早之前使用禅道管理,但是感觉禅道上设定的产品,项目,需求,任务之间的依赖关系比较严格,有时候项目的推进并不是这么规范的,用起来就比较不顺手了。但是还是得说,禅道也是国产的项目管理产品中非常不错的。

好了,回来再说 Phabricator,虽然用起来很灵活,但是就是有一个很大的问题,对于中文的搜索非常的糟糕,这也是在意料之中的事情。所以我想着让 Phabricator 结合 ElasticSearch 来进行全文检索,对于中文分词来讲,IK 是非常的棒的,所以把 IK 这个扩展也要做到 ElasticSearch 中。

以下是用到的版本信息:

安装 Phabricator

Phabricator 的安装可以参考官方网站上的说明文档,如果是一台干净的机器,直接完全用来安装 Phabricator,他还提供了完整的自动化安装的脚本。

安装 ElasticSearch

首先在官方网站下载 ElasticSearch 5.4.0 的 DEB 安装包:点击这里进入下载页面。然后在 Ubuntu 上使用 dpkg 命令安装。

由于 ElasticSearch 需要 1.8 版本的 JDK,我现在在用的 Ubuntu 14.04 的软件仓库中没有 JDK 1.8,所以直接去 Oracle 的网站下载一个 Linux 版本的 Java SDK,然后直接解压缩就可以了。

由于解压缩版本的 Java SDK 不会向系统注册任何变量什么的,所以需要手动的修改一下 ElasticSearch 的启动脚本 /etc/init.d/elasticsearch,在 export JAVA_HOME 一行上面插入刚才解压缩的 Java SDK 的目录设定:

然后就可以启动 ElasticSearch 的服务了,默认情况下监听地址和端口是: http://127.0.0.1:9200:

安装 IK 分词插件

IK 分词插件的文档对于如何安装写的很清楚了,可以参考这里:https://github.com/medcl/elasticsearch-analysis-ik。
需要提示的是,如果 ElasticSearch 使用 DEB 包安装,那么他的目录位于: /usr/share/elasticsearch。把下载的打包好的 IK 插件 zip 文件解压缩到: /usr/share/elasticsearch/plugins/ik,目录结构如下:

解压缩 IK 插件之后,需要重启 ElasticSearch 服务:

配置 ElasticSearch 使用 IK 分词插件

默认情况下,Phabricator 的全文索引的仓库名字叫做 phabricator,所以,我们可以先为 ElasticSearch 针对这个仓库配置 IK 分词插件:

配置 Phabricator 连接到 ElasticSearch

我使用的这个 2017 5 月底版本的 Phabricator 的全文检索的配置项相比之前的版本已经发生了变化,新的配置项是 cluster.search,并且这个项不能在 Web 界面上配置,需要使用 ./bin/config 命令来配置:

然后在 Phabricator 的 Config 菜单中,检查 Search Servers:

如果没有出现 Okay 的字样,表示配置存在问题,需要重新检查。

配置完毕之后,可以进行索引的初始化和创建:

比较奇怪的是,之前版本的 Phabricator 直接使用 ./bin/search index --type all 就可以自动完全的重建索引,但是这个版本我发现 --type all 会包含二进制的文件,所以会导致索引的过程一致在报错,所以,只好选择自己需要的类型来进行索引了。

可用的类型有:

  • AlmanacDevice
  • AlmanacNamespace
  • AlmanacNetwork
  • AlmanacService
  • ConpherenceThread
  • DifferentialRevision
  • DivinerLiveBook
  • DivinerLiveSymbol
  • DrydockBlueprint
  • FundInitiative
  • HarbormasterBuildPlan
  • ManiphestTask
  • NuanceSource
  • PassphraseCredential
  • PhabricatorBadgesBadge
  • PhabricatorCalendarEvent
  • PhabricatorDashboard
  • PhabricatorDashboardPanel
  • PhabricatorFile
  • PhabricatorOwnersPackage
  • PhabricatorPackagesPackage
  • PhabricatorPackagesPublisher
  • PhabricatorPackagesVersion
  • PhabricatorPhurlURL
  • PhabricatorProject
  • PhabricatorRepository
  • PhabricatorRepositoryCommit
  • PhabricatorUser
  • PhameBlog
  • PhamePost
  • PholioMock
  • PhrictionDocument
  • PonderQuestion

关键是我还没有找到一次 ./bin/search index --type 命令如何传送多种类型的方式,郁闷的我只好一个一个的来,当然了我这里只启用了几个模块,所以需要索引的无非就是文档,版本提交,任务,设计原型这么几个。

8 Comments

  • 增网 回复

    看看你的博客,也是一种娱乐!

  • 回复

    这个不错哦,我好好读读!

  • 达网Q 回复

    没玩过博客,感觉还挺好玩!

  • 逆向直 回复

    爷,收下我的膝盖!

  • 直销 回复

    好几年没用过博客了,支持下!

  • 我啦 回复

    哈哈,这个好,认真拜读下!

  • 1425423284 回复

    好好学习,天天向上

  • 辛星 回复

    支持一下

发表评论

电子邮件地址不会被公开。 必填项已用*标注