Phabricator 配置 ElasticSearch 以及中文分词

栏目: 编程工具 · 发布时间: 7年前

内容简介:Phabricator 配置 ElasticSearch 以及中文分词

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

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

以下是用到的版本信息:

安装 Phabricator

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

安装 ElasticSearch

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

user@host:~$ sudo dpkg -i elasticsearch-5.4.0.deb

由于 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 的目录设定:

# Define other required variables
PID_FILE="$PID_DIR/$NAME.pid"
DAEMON=$ES_HOME/bin/elasticsearch
DAEMON_OPTS="-d -p $PID_FILE -Edefault.path.logs=$LOG_DIR -Edefault.path.data=$DATA_DIR -Edefault.path.conf=$CONF_DIR"
# 这里,把我们解压缩版本的 Java SDK 的路径配置进来
JAVA_HOME="/home/user/apps/jdk1.8.0_131"
export ES_JAVA_OPTS
export JAVA_HOME
export ES_INCLUDE
export ES_JVM_OPTIONS

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

user@host:~$ sudo service elasticsearch start

安装 IK 分词插件

IK 分词插件的文档对于如何安装写的很清楚了,可以参考这里: https://github.com/medcl/elasticsearch-analysis-ik。

需要提示的是,如果 ElasticSearch 使用 DEB 包安装,那么他的目录位于: / usr / share / elasticsearch

。把下载的打包好的 IK 插件 zip 文件解压缩到:

/ usr / share / elasticsearch / plugins / ik

,目录结构如下:

user@host:/usr/share/elasticsearch/plugins/ik$ pwd
/usr/share/elasticsearch/plugins/ik
user@host:/usr/share/elasticsearch/plugins/ik$ ls
commons-codec-1.9.jar    config                               httpclient-4.5.2.jar  plugin-descriptor.properties
commons-logging-1.2.jar  elasticsearch-analysis-ik-5.4.0.jar  httpcore-4.4.4.jar

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

user@host:~$ sudo service elasticsearch restart

配置 ElasticSearch 使用 IK 分词插件

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

curl -XPOST http://localhost:9200/index/phabricator/_mapping -d'
{
    "phabricator": {
             "_all": {
            "analyzer": "ik_max_word",
            "search_analyzer": "ik_max_word",
            "term_vector": "no",
            "store": "false"
        },
        "properties": {
            "content": {
                "type": "text",
                "analyzer": "ik_max_word",
                "search_analyzer": "ik_max_word",
                "include_in_all": "true",
                "boost": 8
            }
        }
    }
}'

配置 Phabricator 连接到 ElasticSearch

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

user@host:~$ cd your_phabricator_path
user@host:~$ ./bin/config set cluster.search '[{"type": "elasticsearch", "version": 5, "hosts": [{"host": "127.0.0.1", "port": 9200, "protocol": "http", "roles": {"read": true, "write": true } } ] }]'

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

Phabricator 配置 ElasticSearch 以及中文分词

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

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

user@host:~$ cd your_phabricator_path
user@host:~$ ./bin/search init
user@host:~$ ./bin/search index --type 要索引的对象类型

比较奇怪的是,之前版本的 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 命令如何传送多种类型的方式,郁闷的我只好一个一个的来,当然了我这里只启用了几个模块,所以需要索引的无非就是文档,版本提交,任务,设计原型这么几个。


以上所述就是小编给大家介绍的《Phabricator 配置 ElasticSearch 以及中文分词》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

TensorFlow:实战Google深度学习框架(第2版)

TensorFlow:实战Google深度学习框架(第2版)

顾思宇、梁博文、郑泽宇 / 电子工业出版社 / 2018-2-1 / 89

TensorFlow是谷歌2015年开源的主流深度学习框架,目前已得到广泛应用。《TensorFlow:实战Google深度学习框架(第2版)》为TensorFlow入门参考书,旨在帮助读者以快速、有效的方式上手TensorFlow和深度学习。书中省略了烦琐的数学模型推导,从实际应用问题出发,通过具体的TensorFlow示例介绍如何使用深度学习解决实际问题。书中包含深度学习的入门知识和大量实践经......一起来看看 《TensorFlow:实战Google深度学习框架(第2版)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具