Solr側の新元号対応が原因でハマった件。時代の最後尾を往くWebサイト。Solr側の新元号対応が原因でハマった件。目次はじめにkuromojiがビルドできるまで。7用のNEologdを組み込んだkuromojiをビルドした件について書きました。8)が登場していました。8の新元号対応パッチが原因でkuromojiのビルドができませんでした。そこで、修正を行ったパッチを作成し、それを適用することでkuromojiのビルドができるようになりました。この記事ではkuromojiのビルドの方法及びビルドの際の対応策について書きます。kuromojiがビルドできるまで。基本的にはこの記事と同じ手順で作業を進めていきます。この記事ではSolr8対応のkuromojiで、かつNEologdを組み込んだものを「kuromoji-NEologd」と書きます。kuromoji-NEologdの作成に用いた環境kuromoji-NEologdの作成に用いた環境は以下の通りです。8.1.1ビルドの手順kuromoji-NEologdは以下の手順でビルドします。Antがインストールされていない場合には、dnfコマンドを使用してインストールします。具体的なインストールの方法はこちらをご参照ください。Solrのダウンロードのページからソースコード(この記事を最初に書いている時点(2019年6月)の最新版は8.1.1です。以下、8.1.1をダウンロードしたものとして記述します。)をダウンロードします。)にダウンロードします。PC上で以下のコマンドを実行し、手順3でダウンロードしたソースコードを展開します。solr-8.1.1-src.tgzすると、solr-8.1.1という名前のディレクトリが作成されて、その下にソースコードが展開されます。言いたいところですが、前の記事で使ったパッチがうまく適用できませんでした(詳細については後述。)ので、パッチを作り直した上で以下のコマンドを実行し、ソースコードにパッチを適用します。作り直したパッチはGitHubに置きました。solr-8.1.1-kuromoji-neologd.patchパッチの適用に成功したら、NEologdのGitHubでNEologdの最新の更新日を確認します。NEologdのトップページ(下図)の赤矢印のあたりに書いてあることが多いようです。手順6で確認した更新日を年4桁、月2桁(左ゼロ詰め)、日2桁(左ゼロ詰め)の8桁で表した文字列をlucene/build.propertiesのneologd.propertiesに指定します。指定例を以下に示します。neologd.version=20190530solr-8.1.1の直下のディレクトリで以下のコマンドを実行します。時間がかかるかもしれませんが、辛抱強く待ちます。jar-corelucene/build/analysis/kuromojiの下に以下のような名前のjarファイルが作成されます。neologd>.jarパッチの適用に失敗した原因と対応策この記事におけるビルド時に使用したパッチの適用に失敗した直接の原因は、lucene/analysis/kuromoji/build.xmlで定義されているビルドのターゲットのうち、”build-dict”ターゲットのdepends属性の定義が衝突していた(パッチ側では想定されていなかった”patch-dict”ターゲットがdependencyとして設定されていた。patchfile=”src/tools/patches/Noun.proper.csv.patch”originalfile=”${dict.src.dir}/Noun.proper.csv”/></target>スポンサーリンクとなっていました。Noun.proper.csvにパッチを当てる処理を実行するようです。それで、このNoun.proper.csv.patchは一体何者なのかといいますと...なんと、「新元号対応パッチ」でした。🤔パッチの適用対象となっているNoun.proper.csvは固有名詞が記述されているファイルですが、NEologdによって修正が行われる可能性がありそうなことと、パッチ適用後の”build-dict”ターゲットのdepends属性に追加される”build-dict-neologd”ターゲット中で実行されるmake-mecab-ipadic-neologd.shというシェルスクリプト中でNoun.proper.csvに対する(別の)パッチ(*1)の適用等の変更が行われていることから、以下のように処理の方法を変更することとしました。“patch-file”ターゲットは実行しない。Noun.proper.csv.patchの最後の行を上記(*1)が適用後のNoun.proper.csvに追加するための処理をmake-mecab-ipadic-neologd.shに挿入するためのパッチ(*2)を作成する。上記パッチ(*2)を適用する処理を”build-dict-neologd”ターゲットでmake-mecab-ipadic-neologd.shを起動する直前に挿入する。スポンサーリンクまとめkuromojiのビルドに成功すると、次はインストール及び動作確認という作業の流れになります。Solrの必要最低限の設定の方法についてはあまりこれといった定番の方法がないようですので、この記事とは異なる視点を織り込みつつ、別の記事で書きましたので、ご覧いただけると幸いです。Plugin)を使ってみる。8用のkuromoji(NEologd入り)の動作確認のためにテキストファイルを1個だけインポートしてみた。DataImportHandlerの拡張用のコードをちょいと追加して、7-Zipで圧縮されたデータをインポートしてみた。NEologdを組み込んだSolr7対応のkuromojiを作ってみた。Legendre多項式の直交性を最高次の項の係数だけを計算することにより証明してみた。8用のkuromoji(NEologd入り)の動作確認のためにテキストファイルを1個だけインポートしてみた。このウィジェットの背景が黒くなってしまうことがある理由についてはこちらをクリック。AviUtlgimp-2.10.sikuliGIMP-2.10を使ってスクリーンショットを取得するためのSikuliXのスクリプト。SikuliX-2.0.1+GIMP-2.10.10の組み合わせでのみ動作確認を行っています。SolrのDataImportHandlerで7-zipで圧縮されたファイルのインポートをサポートするためのJARファイル。struts2ajaxtestStruts2でAjaxを使用するWebアプリケーションのサンプル。LANを発行するためのスクリプトのサンプル(Fedora用)。8用のNEologd入りkuromojiをビルドするためのパッチ。8.1→10にアップグレードしてみたところ、途中で電池が切れて復旧に手間取った件。APIを呼び出し、Bitcoinの価格を取得するPython3のプログラムを書いてみた。httpからhttpsへのリダイレクトを削減するためのnginxの設定。YouTube↓のボタンを押していただくとチャンネルを登録できます。見解等とは一切関係ありません。