這次安裝的系統是Ubuntu 12.04 Server版,Apache Solr 和 IKAnalyzer 都沒變,不過環境和之前不一樣,把過程記錄下來,供大家參考。
注意:如果你在接下來的過程中有直接複製粘貼代碼的操作,粘貼後要將引號替換成英文引號。
步驟:
1、首先是下載相關程式
2、接下來安裝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。
3、現在安裝Jetty 9
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 # 設置為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
提示有錯誤: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
4、安裝Solr 4.9
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
1. sudo service jetty restart
注意:我在本地測試的時候,用chrome打開solr會一直緩衝,有內容載入不完全,換其他流覽器就好了
5、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。多核地址:
6、為Drupal網站安裝配置apachesolr
複製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則說明連接成功。接下來研究中文分詞。
7、drupal 的中文分詞
檔這部分還是使用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”/>
沒有留言:
張貼留言