diff --git a/src/main/java/com/worksap/nlp/sudachi/MorphemeImpl.java b/src/main/java/com/worksap/nlp/sudachi/MorphemeImpl.java deleted file mode 100644 index 1ccfc82..0000000 --- a/src/main/java/com/worksap/nlp/sudachi/MorphemeImpl.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright (c) 2017-2022 Works Applications Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.worksap.nlp.sudachi; - -import com.worksap.nlp.sudachi.dictionary.WordInfo; -import java.util.List; - -/** - * Recreated {@link com.worksap.nlp.sudachi.MorphemeImpl} as-is locally but with a public access modifer, - * because Solr (for some reason unknown to me as of v9.4.0 incl.) tries to apply reflection on to the original MorphemeImpl from the Works Applications Co., Ltd, - * which has package default visibility. In other words, the issue is not the package default visibility, but why Solr tries to reflect on MorphemeImpl?! - * - * See https://github.com/WorksApplications/Sudachi/issues/220 for the stacktrace example. - */ -public class MorphemeImpl implements Morpheme { - - final MorphemeList list; - final int index; - WordInfo wordInfo; - - MorphemeImpl(MorphemeList list, int index) { - this.list = list; - this.index = index; - } - - @Override - public int begin() { - return list.getBegin(index); - } - - @Override - public int end() { - return list.getEnd(index); - } - - @Override - public String surface() { - return list.getSurface(index); - } - - @Override - public List partOfSpeech() { - WordInfo wi = getWordInfo(); - return list.grammar.getPartOfSpeechString(wi.getPOSId()); - } - - @Override - public short partOfSpeechId() { - WordInfo wi = getWordInfo(); - return wi.getPOSId(); - } - - @Override - public String dictionaryForm() { - WordInfo wi = getWordInfo(); - return wi.getDictionaryForm(); - } - - @Override - public String normalizedForm() { - WordInfo wi = getWordInfo(); - return wi.getNormalizedForm(); - } - - @Override - public String readingForm() { - WordInfo wi = getWordInfo(); - return wi.getReadingForm(); - } - - @Override - public List split(Tokenizer.SplitMode mode) { - return list.split(mode, index); - } - - @Override - public boolean isOOV() { - return list.isOOV(index); - } - - @Override - public int getWordId() { - return list.getWordId(index); - } - - @Override - public int getDictionaryId() { - return list.getDictionaryId(index); - } - - @Override - public int[] getSynonymGroupIds() { - WordInfo wi = getWordInfo(); - return wi.getSynonymGoupIds(); - } - - WordInfo getWordInfo() { - if (wordInfo == null) { - wordInfo = list.getWordInfo(index); - } - return wordInfo; - } - - @Override - public String toString() { - final StringBuilder sb = new StringBuilder("MorphemeImpl{"); - sb.append("begin=").append(begin()); - sb.append(", end=").append(end()); - sb.append(", surface=").append(surface()); - sb.append(", pos=").append(partOfSpeechId()).append('/').append(partOfSpeech()); - int wordId = getWordId(); - sb.append(", wid=(").append(WordId.dic(wordId)).append(',').append(WordId.word(wordId)); - sb.append(")}"); - return sb.toString(); - } -} diff --git a/src/smokeTest/solr_9.x.x/solr_9_4_0/Dockerfile b/src/smokeTest/solr_9.x.x/solr_9_4_0/Dockerfile index e23d3df..bb082e1 100644 --- a/src/smokeTest/solr_9.x.x/solr_9_4_0/Dockerfile +++ b/src/smokeTest/solr_9.x.x/solr_9_4_0/Dockerfile @@ -42,23 +42,22 @@ FROM solr:9.4.0@sha256:4e9b6794895f1f6685a61d587b63e2f0caa2b6f9a5a2c0e67613d4f16 MAINTAINER Alexander Zagniotov -ENV SOLR_JAVA_MEM="-Xms4g -Xmx4g" -ENV SOLR_INSTALL_DIR=/opt/solr -ENV SOLR_SERVER_HOME=$SOLR_INSTALL_DIR/server - -# https://solr.apache.org/guide/solr/9_4/configuration-guide/libs.html#lib-directories -ENV SOLR_INSTALL_LIB_DIR=$SOLR_INSTALL_DIR/lib - +ENV SOLR_JAVA_MEM="-Xms2g -Xmx2g" +ENV SOLR_OPT_DIR=/opt/solr +ENV SOLR_SERVER_HOME=$SOLR_OPT_DIR/server ENV SUDACHI_DICT_HOME=/tmp/sudachi -ENV SUDACHI_SYSTEM_DICT=$SOLR_INSTALL_DIR/system.dict -ENV SUDACHI_USER_DICT=$SOLR_INSTALL_DIR/user_lexicon.dict +ENV SOLR_WEB_INF_LIB_HOME=$SOLR_SERVER_HOME/solr-webapp/webapp/WEB-INF/lib + +ENV SUDACHI_SYSTEM_DICT=$SOLR_OPT_DIR/system.dict +ENV SUDACHI_USER_DICT=$SOLR_OPT_DIR/user_lexicon.dict USER root -# https://solr.apache.org/guide/solr/9_4/configuration-guide/libs.html#lib-directories -COPY --from=BUILD_JAR_STAGE /home/gradle/solr-lucene-analyzer-sudachi/build/libs/solr-lucene-analyzer-sudachi*.jar $SOLR_INSTALL_LIB_DIR/ -COPY --from=BUILD_JAR_STAGE $SUDACHI_DICT_HOME/system-dict/system.dict $SOLR_INSTALL_DIR/system.dict -COPY --from=BUILD_JAR_STAGE $SUDACHI_DICT_HOME/user_lexicon.dict $SOLR_INSTALL_DIR/user_lexicon.dict +# Copy dictionaries to /opt/solr +# See https://github.com/apache/solr-docker/blob/7e3be2fce98be1fe9c80be0727b4600d4b52fd0f/9.3/Dockerfile#L129 +COPY --from=BUILD_JAR_STAGE $SUDACHI_DICT_HOME/system-dict/system.dict $SOLR_OPT_DIR/system.dict +COPY --from=BUILD_JAR_STAGE $SUDACHI_DICT_HOME/user_lexicon.dict $SOLR_OPT_DIR/user_lexicon.dict +COPY --from=BUILD_JAR_STAGE /home/gradle/solr-lucene-analyzer-sudachi/build/libs/solr-lucene-analyzer-sudachi*.jar $SOLR_WEB_INF_LIB_HOME/ COPY schema.xml $SOLR_SERVER_HOME/solr/configsets/_default/conf/managed-schema.xml USER solr diff --git a/src/smokeTest/solr_9.x.x/solr_9_4_0/Dockerfile.arm64 b/src/smokeTest/solr_9.x.x/solr_9_4_0/Dockerfile.arm64 index e1e8459..b7be0b9 100644 --- a/src/smokeTest/solr_9.x.x/solr_9_4_0/Dockerfile.arm64 +++ b/src/smokeTest/solr_9.x.x/solr_9_4_0/Dockerfile.arm64 @@ -43,22 +43,21 @@ FROM solr:9.4.0@sha256:fbb40ba32b4092aa7e81f49b66dea2628b66950121853ac6792674ee8 MAINTAINER Alexander Zagniotov ENV SOLR_JAVA_MEM="-Xms4g -Xmx4g" -ENV SOLR_INSTALL_DIR=/opt/solr -ENV SOLR_SERVER_HOME=$SOLR_INSTALL_DIR/server - -# https://solr.apache.org/guide/solr/9_4/configuration-guide/libs.html#lib-directories -ENV SOLR_INSTALL_LIB_DIR=$SOLR_INSTALL_DIR/lib - +ENV SOLR_OPT_DIR=/opt/solr +ENV SOLR_SERVER_HOME=$SOLR_OPT_DIR/server ENV SUDACHI_DICT_HOME=/tmp/sudachi -ENV SUDACHI_SYSTEM_DICT=$SOLR_INSTALL_DIR/system.dict -ENV SUDACHI_USER_DICT=$SOLR_INSTALL_DIR/user_lexicon.dict +ENV SOLR_WEB_INF_LIB_HOME=$SOLR_SERVER_HOME/solr-webapp/webapp/WEB-INF/lib + +ENV SUDACHI_SYSTEM_DICT=$SOLR_OPT_DIR/system.dict +ENV SUDACHI_USER_DICT=$SOLR_OPT_DIR/user_lexicon.dict USER root -# https://solr.apache.org/guide/solr/9_4/configuration-guide/libs.html#lib-directories -COPY --from=BUILD_JAR_STAGE /home/gradle/solr-lucene-analyzer-sudachi/build/libs/solr-lucene-analyzer-sudachi*.jar $SOLR_INSTALL_LIB_DIR/ -COPY --from=BUILD_JAR_STAGE $SUDACHI_DICT_HOME/system-dict/system.dict $SOLR_INSTALL_DIR/system.dict -COPY --from=BUILD_JAR_STAGE $SUDACHI_DICT_HOME/user_lexicon.dict $SOLR_INSTALL_DIR/user_lexicon.dict +# Copy dictionaries to /opt/solr +# See https://github.com/apache/solr-docker/blob/7e3be2fce98be1fe9c80be0727b4600d4b52fd0f/9.3/Dockerfile#L129 +COPY --from=BUILD_JAR_STAGE $SUDACHI_DICT_HOME/system-dict/system.dict $SOLR_OPT_DIR/system.dict +COPY --from=BUILD_JAR_STAGE $SUDACHI_DICT_HOME/user_lexicon.dict $SOLR_OPT_DIR/user_lexicon.dict +COPY --from=BUILD_JAR_STAGE /home/gradle/solr-lucene-analyzer-sudachi/build/libs/solr-lucene-analyzer-sudachi*.jar $SOLR_WEB_INF_LIB_HOME/ COPY schema.xml $SOLR_SERVER_HOME/solr/configsets/_default/conf/managed-schema.xml USER solr