欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Ubuntu 上的Drupal Apache Solr 4.9 & IKAnalyzer 中文分词配置

Ubuntu 上的Drupal Apache Solr 4.9 & IKAnalyzer 中文分词配置

这次安装的系统是Ubuntu 12.04 Server 版,Apache Solr IKAnalyzer 都没变,不过环境和之前不一样,把过程记录下来,供大家参考。
  注意:如果你在接下来的过程中有直接复制粘贴代码的操作,粘贴后要将引号替换成英文引号。
  步骤·       


相关程式下载·   

    
安装 jdk 7·     

  
安装 Jetty 9·      

 
安装 Solr 4.9·      

 
Solr 多核配置·     

  
安装配置 apachesolr 模组·     

  
配置中文分词  


、首先是下载相关程式大家可以直接通过伺服器下载,也可以本地上传,当然,如果你能去机房用盘挂载读取也是可以的。下面是下载连结以及网盘位址:

·       Apache Solr 4.9 http://archive.apache.org/dist/lucene/solr/4.9.0/solr-4.9.0.zip

·       Apache Solr 4.9 网盘下载 Apache Solr 4.9密码: mi4i 

·       其他Apache Solr http://archive.apache.org/dist/lucene/solr/

·       Jetty 9 http://download.eclipse.org/jetty/stable-9/dist/

·       Jetty 9 网盘下载 Jetty 9密码: xbv0 

·       IKAnalyzer 2012FF_hf1.zip https://code.google.com/p/ik-analyzer/

·       IKAnalyzer 2012FF_hf1.zip 网盘下载 IKAnalyzer 2012FF_hf1.zip密码: utqv 

·       修改后的jar 包:IKAnalyzer2012FF_u1_custom.jar密码: 6bjm  

 
、接下来安装jdk 7因为Jetty 9 的运行需要java 环境,如果你的ubuntu 上有安装且不低于jdk 7 就可以跳过这一步了,如果你没有安装过,那就先安装一个,很简单的:
1. 
   
sudo apt-get install -y openjdk-7-jdk   
2. 
   
sudo mkdir -p /usr/java   
3. 
   
sudo ln -s /usr/lib/jvm/java-7-openjdk-i386 /usr/java/default   
4. 
   
echo  "export JAVA_HOME=/usr/java/default"  >> ~/.profile  上面第三行命令呢是32 位元系统下的,如果是64 位元的系统,路径就应该是/usr/lib/jvm/java-7-openjdk-amd64
 

 
、现在安装Jetty 9首先进入到Jetty 压缩包所在的资料夹,解压到/opt 下,之后设置$JETTY_HOME ,创建一个jetty 用户并设置为$JETTY_HOME 的所有人。
1. 
   
tar zxvf jetty-distribution-9.2.3.v20140905.tar.gz -C /opt   
2. 
   
mv /opt/jetty-distribution-9.2.3.v20140905/ /opt/jetty/   
3. 
   
echo  "export JETTY_HOME=/opt/jetty/"  >> ~/.profile   
4. 
   
sudo useradd jetty -U -s /bin/ false  
5. 
   
sudo chown -R jetty :jetty  /opt/jetty  复制jetty.sh /etc/init.d/ 下,让它作为一个服务运行。
1. 
   
sudo cp -a /opt/jetty/bin/jetty.sh /etc/init.d/jetty  /etc/default 下创建Jetty 设定档
1. 
   
sudo nano /etc/default/jetty  并粘贴下面代码,注释记得去掉:
1. 
   
JAVA_HOME=/usr/java/default  # Java  路径
2. 
   
JETTY_HOME=/opt/jetty   # Jetty  路径
3. 
   
NO_START=0  #  设置为
,允许jetty 开启
4. 
   
JETTY_HOST=0.0.0.0  #  设置
0.0.0.0 
,则IP localhost 都可以访问
5. 
   
JETTY_USER=jetty  #  作为该用户运行保存后就可以开启Jetty 
1. 
   
sudo service jetty start  当看到提示:Starting Jetty: OK 时,说明开启成功。我们访问http://localhost:8080/试试。提示有错误:Error 404 - Not Found   No context on this server matched or handled this request. Contexts known to this server are查看了一下,因为/opt/jetty/webapps/ 下面是空的,复制下面的档就好了。
1. 
   
sudo cp -R /opt/jetty/demo-base/webapps /opt/jetty/    附:如果想要jetty 开机启动,下面命令搞定
1. 
   
sudo update-rc.d jetty defaults  如果想更改Jetty 埠,编辑$JETTY_HOME 下的start.d/http.ini ,修改jetty.port
1. 
   
sudo nano /opt/jetty/start.d/http.ini  
1. 
   
— module =http   
2. 
   
## HTTP Connector Configuration
3. 
   
jetty.port=8080   
4. 
   
http.timeout=30000  


、安装Solr 4.9终于开始配置Solr 了,首先第一步当然还是解压缩,位置任意
1. 
   
sudo tar zxvf solr-4.9.0.tgz -C /tmp  复制.war 包到$JETTY_HOME 下的webapps 资料夹,复制example/solr /opt dist 资料夹和contrib 资料夹也是必需的。
1. 
   
sudo cp -a solr-4.9.0/dist/solr-4.9.0.war /opt/jetty/webapps/solr.war   
2. 
   
sudo cp -a solr-4.9.0/example/solr /opt/solr   
3. 
   
sudo cp -a solr-4.9.0/dist /opt/solr   
4. 
   
sudo cp -a solr-4.9.0/contrib /opt/solr  复制context 和一些模组以确保solr jetty 上正确运行
1. 
   
sudo cp -a solr-4.9.0/example/contexts/solr-jetty-context.xml /opt/jetty/webapps/solr.xml   
2. 
   
sudo cp -a solr-4.9.0/example/lib/ext/* /opt/jetty/lib/ext/  添加下面代码到jetty 设置档第一行
1. 
   
sudo nano /etc/default/jetty  
1. 
   
JAVA_OPTIONS= "-Dsolr.solr.home=/opt/solr $JAVA_OPTIONS"修改solrconfig.xml 里面的路径,确保solr 能读取到改变结构后的contrib dist 下的档
1. 
   
sudo nano /opt/solr/collection1/conf/solrconfig.xml  
1. 
   
<lib dir= "../../contrib/extraction/lib"  regex= ".*.jar"  />   
2. 
   
<lib dir= "../../dist/"  regex= "solr-cell-d.*.jar"  />   
  
3. 
   
<lib dir= "../../contrib/clustering/lib/"  regex= ".*.jar"  />   
4. 
   
<lib dir= "../../dist/"  regex= "solr-clustering-d.*.jar"  />   
  
5. 
   
<lib dir= "../../contrib/langid/lib/"  regex= ".*.jar"  />   
6. 
   
<lib dir= "../../dist/"  regex= "solr-langid-d.*.jar"  />   
  
7. 
   
<lib dir= "../../contrib/velocity/lib"  regex= ".*.jar"  />   
8. 
   
<lib dir= "../../dist/"  regex= "solr-velocity-d.*.jar"  />  更改solr 的用户组
1. 
   
sudo chown -R jetty :jetty  /opt/solr  OK ,现在可以重启jetty 了,solr 访问位址:http://localhost:9090/solr
1. 
   
sudo service jetty restart  注意:我在本地测试的时候,用chrome 打开solr 会一直缓冲,有内容载入不完全,换其他流览器就好了
  


Solr 的多核配置
1. 
   
cd /opt/solr/   
2. 
   
sudo mv collection1/ core0/   
3. 
   
sudo cp -R core0/ core1/   
4. 
   
cd core1/   
5. 
   
sudo nano core.properties  修改name 值为资料夹名称
1. 
   
name=core1  保存后记得修改用户组,并重启jetty 多核地址:·       http://localhost:8080/solr/core0·       http://localhost:8080/solr/core1 

 
、为Drupal 网站安装配置apachesolr下载安装后apachesolr 后,开启Apache Solr search Apache Solr framework 复制apachesolr 模组的设定档,粘贴到/opt/solr 具体命令:
1. 
   
cd sites/all/modules/apachesolr/solr-conf/solr-4.x   
2. 
   
sudo cp *.* /opt/solr/collection1/conf/  修改用户组,重启Jetty ,之后访问http://your.drupal.site/admin/config/search/apachesolr/settings,点击Add search environment (添加搜索环境),Solr Server Url 填写你的搜索核心的地址:http://localhost:8080/solr/core0 保存之前可以点击下面的Test connect (测试连结)用来测试一下,提示Your site has contacted the Apache Solr server 则说明连接成功。接下来研究中文分词。

  
drupal 的中文分词之前有讲过IKAnalyzer 中文分词的配置方法以及自订修改,详情:·       windows 系统组态 solr  Ikanalyzer·       修改 Ikanalyzer 智能分词和细细微性分词档这部分还是使用IKAnalyzer 2012FF_hf1.zip 以及我修改过的IKAnalyzer2012FF_u1_custom.jar ,下面是具体方法/opt/solr/ 下创建两个资料夹,lib/ classes/ ,然后将IKAnalyzer2012FF_u1_custom.jar 放在lib 下,将IKAnalyzer.cfg.xml stopword.dic 放在classes 
1. 
   
sudo mkdir /opt/solr/lib   
2. 
   
sudo mkdir /opt/solr/classes   
3. 
   
sudo cp IKAnalyzer2012FF_u1_custom.jar /opt/solr/lib/   
4. 
   
sudo cp IKAnalyzer.cfg.xml /opt/solr/classes/   
5. 
   
sudo cp stopword.dic /opt/solr/classes/  这里我们没有把.jar 档放在/opt/jetty/solr-webapp/webapp/WEB-INF/lib/ 下的原因是jetty 启动时会将/opt/jetty/webapps/solr.war 解压到这里,我们的分词.jar 会被删掉。之后修改schema.xml 文件
1. 
   
sudo nano /opt/solr/core0/conf/schema.xml  在开头的位置,找到下面这行代码,将version 的值改为
1.5 

1. 
   
schema name "drupal-4.3-solr-4.x" version "1.3" >  这里修改的原因让Solr 先对搜索的短语进行分词然后再搜索。版本为
1.3 
时,搜索的短语solr 不进行分词,而是直接搜索,也就是你在搜索栏输入什么,solr 就搜索什么,是完全匹配搜索,这对我们是没有意义的。版本修改为
1.5 
之后,solr 会先对搜索栏里的词或句子进行分词处理,之后根据分词结果搜索。而这就是我们想要的结果和搜索方式。接下来在types 标签内添加分词处理代码:
1. 
   
<fieldType name="text_ik"  class ="solr.TextField" > 
2. 
   
<analyzer type="index"  class ="org.wltea.analyzer.lucene.IKAnalyzerWithSmart"  />     
3. 
   
<analyzer type ="query"  class ="org.wltea.analyzer.lucene.IKAnalyzerWithoutSmart"  />     
4. 
   
</fieldType >fields 标签内找到name=label field ,如下,然后修改type 为:text_ik ,也就是上面分词的fieldType name 类似的还有content 等栏位。
1. 
   
<field name="label" type="text" indexed="true" stored="true" termVectors="true" omitNorms="true" />修改为      

2. 
   
<field name="label" type="text_ik" indexed="true" stored="true" termVectors="true" omitNorms="true" />      在最后我们来到档的末尾,将默认操作符改为OR
1. 
   
<solrQueryParser defaultOperator="AND" />修改为 

2. 
   
<solrQueryParser defaultOperator="OR" /> 转载请注明:QiKor  »  Apache Solr 4.9  IKAnalyzer 中文分词配置(续) Ubuntu 上的 Drupal
张贴者:  于 上午9:55 以电子邮件传送这篇文章BlogThis!分享至Twitter分享至Facebook分享到Pinterest标签:  , 


来自  http://coding-life-misc.blogspot.com/2015/06/ubuntu-drupal-apache-solr-49-ikanalyzer.html


普通分类: