4
5

More than 5 years have passed since last update.

SolrをソースからBuildする

Posted at

SolrをソースからBuildする

  • Solr のSimilarity を自分勝手に変更したいと考えたのですが、schemaやsolrconfigでは限界がありました
  • なので、ソースからBuildをし、自分勝手なSimilarityを使いたいと思います
  • Similarityを変更することがメインですが、ソースからBuildするやり方を記載してありますのでご参考に

  • 執筆時点で、solr-4.5.1 が最新版なので、もしバージョンが異なれば適宜修正して読んで下さい

ソフトウェアのダウンロードとインストール

1 yum を用いたパッケージのインストール

$ sudo yum install -y java-1.7.0-openjdk-devel.x86_64
$ sudo yum install -y tomcat6-webapps tomcat6-admin-webapps

2 Solr等の置き場を /app とする

$ sudo mkdir /app
$ sudo chown vagrant:vagrant /app
$ cd /app

3 コンパイルに必要な物をダウンロード

$ wget http://mirrors.go-parts.com/apache/lucene/solr/4.5.1/solr-4.5.1-src.tgz
$ wget http://ftp.riken.jp/net/apache//ant/binaries/apache-ant-1.9.2-bin.tar.gz

4 ant のインストール

$ sudo ln -s /app/infrastructure/apache-ant-1.9.2 /usr/src/apache-ant-1.9.2
$ sudo ln -s /usr/src/apache-ant-1.9.2 /usr/local/ant
$ sudo vim /etc/profile
export ANT_HOME=/usr/local/ant
export PATH=$PATH:$ANT_HOME/bin
$ ant -version
Apache Ant(TM) version 1.9.2 compiled on July 8 2013

5 SolrのBuild

$ cd solr-4.5.1-src
$ ant ivy-bootstrap
$ ant compile
BUILD SUCCESSFUL
Total time: 4 minutes 26 seconds
$ sudo su - 
# cd /appp/solr-4.5.1-src/solr/
# ant example

6 SolrInit のインストール

$ git clone https://github.com/jbusby/solr-initd.git
$ cp solr.initd /etc/init.d/solr
$ chmod 755 /etc/init.d/solr
$ cp solr.start /app/solr-4.5.1-src/solr/example/solr.start
$ cp solr.conf /etc/solr.conf
# Edit solr.conf to suite your needs.
$ vim /etc/solr.conf
SOLR_HOME=/app/solr-4.5.1-src/solr/example
SOLR_START=/app/solr-4.5.1-src/solr/solr.star
LOG_FILE=/var/log/solr/solr.log

Gessy0129Similarityの追加

1 lucene にロジック追加

  • lucene/core/src/java/org/apache/lucene/search/similarities/Gessy0129Similarity.java
    • 書き方はDefaultSimilarity.java 等を参照。コピってもいい
--- lucene/core/src/java/org/apache/lucene/search/similarities/Gessy0129Similarity.java 2014-01-07 08:44:01.913794926 +0000
+++ lucene/core/src/java/org/apache/lucene/search/similarities/DefaultSimilarity.java   2013-06-25 18:54:18.000000000 +0000
@@ -42,7 +42,7 @@
  * Last, note that search time is too late to modify this <i>norm</i> part of
  * scoring, e.g. by using a different {@link Similarity} for search.
  */
-public class Gessy0129Similarity extends TFIDFSimilarity {
+public class DefaultSimilarity extends TFIDFSimilarity {

   /** Cache of decoded bytes. */
   private static final float[] NORM_TABLE = new float[256];
@@ -54,7 +54,7 @@
   }

   /** Sole constructor: parameter-free */
-  public Gessy0129Similarity() {}
+  public DefaultSimilarity() {}

   /** Implemented as <code>overlap / maxOverlap</code>. */
   @Override
@@ -118,8 +118,7 @@
   /** Implemented as <code>sqrt(freq)</code>. */
   @Override
   public float tf(float freq) {
-    return 1;
-    //return (float)Math.sqrt(freq);
+    return (float)Math.sqrt(freq);
   }

   /** Implemented as <code>1 / (distance + 1)</code>. */
@@ -169,6 +168,6 @@

   @Override
   public String toString() {
-    return "Gessy0129Similarity";
+    return "DefaultSimilarity";
   }
 }

2 Solr にもロジック追加
+ solr/core/src/java/org/apache/solr/search/similarities/Gessy0129SimilarityFactory.java
+ DefaultSimilarityFactory.java からコピーし、名前を置換

3 Build

$ cd /app/solr-4.5.1-src
$ ant compile
$ cd solr
$ ant example

4 Schema.xml を修正

 <similarity class="solr.Gessy0129SimilarityFactory" />

5 Solrの再起動

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5