内容简介: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:

如果没有出现 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 以及中文分词》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- ElasticSearch配置中文分词器
- 基于海量公司分词ES中文分词插件
- 北大开源全新中文分词工具包:准确率远超THULAC、结巴分词
- 复旦大学提出中文分词新方法,Transformer连有歧义的分词也能学
- 分词,难在哪里?
- 隐马尔可夫分词
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
TensorFlow:实战Google深度学习框架(第2版)
顾思宇、梁博文、郑泽宇 / 电子工业出版社 / 2018-2-1 / 89
TensorFlow是谷歌2015年开源的主流深度学习框架,目前已得到广泛应用。《TensorFlow:实战Google深度学习框架(第2版)》为TensorFlow入门参考书,旨在帮助读者以快速、有效的方式上手TensorFlow和深度学习。书中省略了烦琐的数学模型推导,从实际应用问题出发,通过具体的TensorFlow示例介绍如何使用深度学习解决实际问题。书中包含深度学习的入门知识和大量实践经......一起来看看 《TensorFlow:实战Google深度学习框架(第2版)》 这本书的介绍吧!