8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Apache Luceneの検証(1): 最新版をソースコードからビルド

Last updated at Posted at 2023-03-05

はじめに

検索プラットフォームとして注目を浴びているApache Solr(アパッチ ソーラー)Elasticsearch(エラスティックサーチ)
いずれも検索ライブラリApache Lucene(アパッチ ルシーン)を利用し、
転置索引の作成と高度な全文検索を実現しています。
Apache Lucene に実際触れながら、その機能を理解してみることにします。

※ 全文検索のインデックスやトークナイズの基本は、以下拙文をご参照ください

Apache Lucene とは

※ 引用元: https://ja.wikipedia.org/wiki/Apache_Lucene

  • Apacheトップレベルプロジェクトの1つで、Doug Cuttingによって開発
  • Java製のFLOSSの検索ライブラリ
    • FLOSS(フロス)は、Free/Libre and Open Source Softwareの頭字語
    • 自由ソフトウェアとオープンソースをまとめた表現
  • 強力な文書インデキシング及び検索機能を提供
  • スペルチェック、ハイライト、テキスト解析機能を提供
  • 日本語のテキスト解析を利用するためには、以下を利用
    • トークナイザー(形態素解析)
      • JapaneseTokenizer(Kuromoji)
      • JapaneseAnalyzer(Kuromoji)
    • アナライザー(フィルタリング・整形)
      • CJKTokenizer
      • CJKAnalyzer

Apache Lucene のホームページ

image.png

Apache Lucene の GitHub リポジトリ

image.png

検証環境

OS: AlmaLinux 9

最新版のソースコードから Lucene をビルドする手順

OpenJDK 19 をインストール

  • dnf コマンドで OpenJDK 19 をインストール
sudo dnf install java-19-openjdk-devel -y
  • 別バージョンのJavaが存在する場合、alternativesコマンドで切り替え
alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-2.el9_1.x86_64/bin/java)
   2           java-latest-openjdk.x86_64 (/usr/lib/jvm/java-19-openjdk-19.0.2.0.7-1.rolling.el9.x86_64/bin/java)

Enter to keep the current selection[+], or type selection number: 2
  • Java バージョンを確認
java -version

openjdk version "19.0.2" 2023-01-17
OpenJDK Runtime Environment (Red_Hat-19.0.2.0.7-1.rolling.el9) (build 19.0.2+7)
OpenJDK 64-Bit Server VM (Red_Hat-19.0.2.0.7-1.rolling.el9) (build 19.0.2+7, mixed mode, sharing)

Gradle 7.6 をインストール

  • Gradle バイナリファイルをダウンロード
wget https://services.gradle.org/distributions/gradle-7.6-bin.zip -P /tmp
  • /opt/gradleディレクトリに解凍
unzip -d /opt/gradle /tmp/gradle-7.6-bin.zip
  • Gradle の環境変数を設定するスクリプトを作成
sudo tee /etc/profile.d/gradle.sh <<EOF
export GRADLE_HOME=/opt/gradle/gradle-7.6
export PATH=\$GRADLE_HOME/bin:\$PATH
EOF
  • スクリプトに実行権限を付与
chmod +x /etc/profile.d/gradle.sh
  • 環境変数をロード
source /etc/profile.d/gradle.sh
  • Gradle バージョンを確認
gradle -v

Welcome to Gradle 7.6!

Here are the highlights of this release:
 - Added support for Java 19.
 - Introduced `--rerun` flag for individual task rerun.
 - Improved dependency block for test suites to be strongly typed.
 - Added a pluggable system for Java toolchains provisioning.

For more details see https://docs.gradle.org/7.6/release-notes.html


------------------------------------------------------------
Gradle 7.6
------------------------------------------------------------

Build time:   2022-11-25 13:35:10 UTC
Revision:     daece9dbc5b79370cc8e4fd6fe4b2cd400e150a8

Kotlin:       1.7.10
Groovy:       3.0.13
Ant:          Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM:          19.0.2 (Red Hat, Inc. 19.0.2+7)
OS:           Linux 5.14.0-162.12.1.el9_1.x86_64 amd64

Lucene の Git リポジトリから最新版ソースコードをクローン

git clone https://github.com/apache/lucene.git

Gradle ランチャスクリプト gradlew を実行

cd lucene
./gradlew

Downloading gradle-wrapper.jar from https://raw.githubusercontent.com/gradle/gradle/v7.6.0/gradle/wrapper/gradle-wrapper.jar
Generating gradle.properties
Downloading https://services.gradle.org/distributions/gradle-7.6-bin.zip
...........10%............20%...........30%............40%............50%...........60%............70%............80%...........90%............100%
Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details

> Task :help

Welcome to Gradle 7.6.

To run a build, run gradlew <task> ...

To see a list of available tasks, run gradlew tasks

To see more detail about a task, run gradlew help --task <task>

To see a list of command-line options, run gradlew --help

For more detail on using Gradle, see https://docs.gradle.org/7.6/userguide/command_line_interface.html

For troubleshooting, visit https://help.gradle.org

This is an experimental Lucene/Solr gradle build. See some
guidelines, ant-equivalent commands etc. under help/*; or type:

  gradlew :helpWorkflow         # Typical workflow commands.
  gradlew :helpTests            # Tests, filtering, beasting, etc.
  gradlew :helpFormatting       # Code formatting conventions.
  gradlew :helpJvms             # Using alternative or EA JVM toolchains.
  gradlew :helpDeps             # Declaring, inspecting and excluding dependencies.
  gradlew :helpForbiddenApis    # How to add/apply rules for forbidden APIs.
  gradlew :helpLocalSettings    # Local settings, overrides and build performance tweaks.
  gradlew :helpRegeneration     # How to refresh generated and derived resources.
  gradlew :helpGit              # Git assistance and guides.
  gradlew :helpIDEs             # IDE support.
  gradlew :helpPublishing       # Maven and other artifact publishing, signing, etc.

For the impatient, build the project with 'gradlew assemble'

BUILD SUCCESSFUL in 17s
3 actionable tasks: 1 executed, 2 up-to-date

数分の短い時間で無事 Lucene のビルドが終わりました。

おわりに

Apache Luceneの最新版をソースコードからビルドしました。
次回は Lucene のチュートリアルを試してみます。
お楽しみに。

8
3
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
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?