Solr是托管于Apache基金会的Lucene项目的一个子工程,它是一个使用Lucene内核的通用搜索服务器, 支持基于HTTP的XML、JSON访问,并且提供Python和Ruby API,具备WEB管理界面,有高亮支持,具备Cache、集群能力。

使用Solr构建搜索,简单好用,代码量也非常小。

部署Solr环境

准备必要的依赖环境

apt-get update
apt-get -y install wget
apt-get -y install lsof
apt-get -y install openjdk-7-jdk

下载和运行Solr

wget http://apache.fayea.com/lucene/solr/5.3.1/solr-5.3.1.tgz
tar -zxvf solr-5.3.1.tgz -C /usr/local/
cd /usr/local && ln -s solr-5.3.1 solr

启动solr

bin/solr start

完成后Solr将侦听在8983端口,可以使用浏览器打开http://localhost:8983进行查看和管理

使Solr支持中文分词,可以使用自带的分词组件,默认没有加载,需要人工将组件拷贝到运行目录,完成后需要重新运行Solr

cp /usr/local/solr/contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-5.3.1.jar /usr/local/solr/server/solr-webapp/webapp/WEB-INF/lib/

停止Solr

bin/solr stop -p 8983

初始化Solr配置

Solr以Collection为单位组织搜索。

1、建立Collection,完成Collection的建立后,将开始在Collection里面保存搜索数据。

cd /usr/local/solr && bin/solr create -c wiki.xglabc.com

2、为Collection配置字段,也就是你要保存的记录里面的字段的类型等。 可以使用Schema API进行操作,或者直接修改配置文件。

1)使用Schema API

添加字段类型

curl -X POST -H 'Content-type:application/json' --data-binary '{
  "add-field-type" : {
    "name":"text_cn_smart",
    "class":"solr.TextField",
    "positionIncrementGap":"100",
    "analyzer" : {
      "tokenizer":{"class":"solr.SmartChineseSentenceTokenizerFactory"},
      "filters":[{"class":"solr.SmartChineseWordTokenFilterFactory"}]
    }
  }
}' http://localhost:8983/solr/wiki.xglabc.com/schema

添加字段

curl -X POST -H 'Content-type:application/json' --data-binary '{
  "add-field":{
    "name":"rev_id",
    "type":"tlongs",
    "multiValued":false,
    "required":true},
  "add-field":{
    "name":"title",
    "type":"text_cn_smart",
    "indexed":true,
    "stored":true,
    "multiValued":false,
    "required":true},
  "add-field":{
    "name":"content",
    "type":"text_cn_smart",
    "indexed":true,
    "stored":true,
    "multiValued":false,
    "required":true},
  "add-field":{
    "name":"last_modify",
    "type":"tdates",
    "indexed":true,
    "stored":true,
    "multiValued":false,
    "required":true}
}' http://localhost:8983/solr/wiki.xglabc.com/schema

修改字段

curl -X POST -H 'Content-type:application/json' --data-binary '{
  "replace-field":{
    "name":"id",
    "type":"string",
    "indexed":true,
    "stored":true,
    "multiValued":false,
    "required":true},
}' http://localhost:8983/solr/wiki.xglabc.com/schema

2)使用配置文件方式

vi /usr/local/solr/server/solr/wiki.xglabc.com/conf/managed-schema

<fieldType name="text_cn_smart" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.SmartChineseSentenceTokenizerFactory"/>
    <filter class="solr.SmartChineseWordTokenFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.SmartChineseSentenceTokenizerFactory"/>
    <filter class="solr.SmartChineseWordTokenFilterFactory"/>
  </analyzer>
</fieldType>
<field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
<field name="rev_id" type="tlongs" multiValued="false" required="true"/>
<field name="title" type="text_cn_smart" multiValued="false" indexed="true" stored="true"/>
<field name="content" type="text_cn_smart" multiValued="false" indexed="true" stored="true"/>

修改文件方式完成后需要重启才可生效

bin/solr stop -p 8983
bin/solr start

使用Solr

如果你使用Python作为开发语言可以选择: - solrcloudpy

用法参考下面 - https://pypi.python.org/pypi/solrcloudpy - http://dfdeshom.github.io/solrcloudpy/

相关文章

· Apache Solr

[ 编辑 | 历史 ]
最近由“jilili”在“2015-10-09 08:25:07”修改