diff --git a/.gitignore b/.gitignore index 175d5db57..354dd0d77 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ *.iml .idea .DS_Store +/plugins/ diff --git a/pom.xml b/pom.xml index eb458f168..fa2c267d3 100644 --- a/pom.xml +++ b/pom.xml @@ -49,6 +49,8 @@ true UTF-8 ${basedir}/src/test/resources/tomcat-users.xml + https://oss.sonatype.org/content/repositories/snapshots + http://central.maven.org/maven2 fess @@ -185,6 +187,33 @@ ${basedir}/dbflute_fess + + maven-antrun-plugin + 1.8 + + + org.apache.ant + ant + 1.9.6 + + + + + + + + + + + + + + + + + run + + diff --git a/src/main/java/org/codelibs/fess/client/FessEsClient.java b/src/main/java/org/codelibs/fess/client/FessEsClient.java index 01c9a1605..875008e5b 100644 --- a/src/main/java/org/codelibs/fess/client/FessEsClient.java +++ b/src/main/java/org/codelibs/fess/client/FessEsClient.java @@ -2,7 +2,10 @@ package org.codelibs.fess.client; import static org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner.newConfigs; +import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -15,6 +18,8 @@ import org.codelibs.core.io.FileUtil; import org.codelibs.core.lang.StringUtil; import org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner; import org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner.Configs; +import org.codelibs.elasticsearch.runner.net.Curl; +import org.codelibs.elasticsearch.runner.net.CurlResponse; import org.codelibs.fess.Constants; import org.codelibs.fess.ResultOffsetExceededException; import org.codelibs.fess.entity.FacetInfo; @@ -159,10 +164,21 @@ public class FessEsClient implements Client { protected List indexConfigList = new ArrayList<>(); + protected Map> configListMap = new HashMap<>(); + public void addIndexConfig(String path) { indexConfigList.add(path); } + public void addConfigFile(String index, String path) { + List list = configListMap.get(index); + if (list == null) { + list = new ArrayList<>(); + configListMap.put(index, list); + } + list.add(path); + } + public void setSettings(Map settings) { this.settings = settings; } @@ -214,6 +230,7 @@ public class FessEsClient implements Client { if (settings != null) { settingsBuilder.put(settings); } + settingsBuilder.put("path.plugins", System.getProperty("user.dir") + "/plugins"); }); runner.build(config); } @@ -263,6 +280,27 @@ public class FessEsClient implements Client { // ignore } if (!exists) { + if (runner != null) {// TODO replace with url + configListMap.getOrDefault(configIndex, Collections.emptyList()).forEach( + path -> { + String source = null; + final String filePath = indexConfigPath + "/" + configIndex + "/" + path; + try { + source = FileUtil.readUTF8(filePath); + try (CurlResponse response = + Curl.post(runner.node(), "_configsync/file").param("path", path).body(source).execute()) { + if (response.getHttpStatusCode() == 200) { + logger.info("Register " + path + " to " + configIndex); + } else { + logger.warn("Invalid request for " + path); + } + } + } catch (final Exception e) { + logger.warn("Failed to register " + filePath, e); + } + }); + } + try { String source = null; final String indexConfigFile = indexConfigPath + "/" + configIndex + ".json"; diff --git a/src/main/resources/esclient.dicon b/src/main/resources/esclient.dicon index c251514fe..c66c67a24 100644 --- a/src/main/resources/esclient.dicon +++ b/src/main/resources/esclient.dicon @@ -9,6 +9,18 @@ "fess/doc" + + "fess" + "ja/mapping.txt" + + + "fess" + "ja/synonym.txt" + + + "fess" + "ja/kuromoji.txt" + ".fess_config/boost_document_rule" diff --git a/src/main/resources/fess_indices/fess/ja/kuromoji.txt b/src/main/resources/fess_indices/fess/ja/kuromoji.txt new file mode 100644 index 000000000..0584019a9 --- /dev/null +++ b/src/main/resources/fess_indices/fess/ja/kuromoji.txt @@ -0,0 +1,3 @@ +日本経済新聞,日本 経済 新聞,ニホン ケイザイ シンブン,カスタム名詞 +関西国際空港,関西 国際 空港,カンサイ コクサイ クウコウ,テスト名詞 +朝青龍,朝青龍,アサショウリュウ,カスタム名詞 diff --git a/src/main/resources/fess_indices/fess/ja/mapping.txt b/src/main/resources/fess_indices/fess/ja/mapping.txt new file mode 100644 index 000000000..9276761bf --- /dev/null +++ b/src/main/resources/fess_indices/fess/ja/mapping.txt @@ -0,0 +1,189 @@ +# Half-width Katakana => Full-width Katakana +"ア" => "ア" +"イ" => "イ" +"ウ" => "ウ" +"エ" => "エ" +"オ" => "オ" +"カ" => "カ" +"キ" => "キ" +"ク" => "ク" +"ケ" => "ケ" +"コ" => "コ" +"サ" => "サ" +"シ" => "シ" +"ス" => "ス" +"セ" => "セ" +"ソ" => "ソ" +"タ" => "タ" +"チ" => "チ" +"ツ" => "ツ" +"テ" => "テ" +"ト" => "ト" +"ナ" => "ナ" +"ニ" => "ニ" +"ヌ" => "ヌ" +"ネ" => "ネ" +"ノ" => "ノ" +"ハ" => "ハ" +"ヒ" => "ヒ" +"フ" => "フ" +"ヘ" => "ヘ" +"ホ" => "ホ" +"マ" => "マ" +"ミ" => "ミ" +"ム" => "ム" +"メ" => "メ" +"モ" => "モ" +"ヤ" => "ヤ" +"ユ" => "ユ" +"ヨ" => "ヨ" +"ラ" => "ラ" +"リ" => "リ" +"ル" => "ル" +"レ" => "レ" +"ロ" => "ロ" +"ワ" => "ワ" +"ヲ" => "ヲ" +"ン" => "ン" +"ッ" => "ッ" +"ァ" => "ァ" +"ィ" => "ィ" +"ゥ" => "ゥ" +"ェ" => "ェ" +"ォ" => "ォ" +"ャ" => "ャ" +"ュ" => "ュ" +"ョ" => "ョ" +"ガ" => "ガ" +"ギ" => "ギ" +"グ" => "グ" +"ゲ" => "ゲ" +"ゴ" => "ゴ" +"ザ" => "ザ" +"ジ" => "ジ" +"ズ" => "ズ" +"ゼ" => "ゼ" +"ゾ" => "ゾ" +"ダ" => "ダ" +"ヂ" => "ヂ" +"ヅ" => "ヅ" +"デ" => "デ" +"ド" => "ド" +"バ" => "バ" +"ビ" => "ビ" +"ブ" => "ブ" +"ベ" => "ベ" +"ボ" => "ボ" +"パ" => "パ" +"ピ" => "ピ" +"プ" => "プ" +"ペ" => "ペ" +"ポ" => "ポ" + +# Full-width alpha-numeric => Half-width alpha-numeric +"0" => "0" +"1" => "1" +"2" => "2" +"3" => "3" +"4" => "4" +"5" => "5" +"6" => "6" +"7" => "7" +"8" => "8" +"9" => "9" + +"A" => "A" +"B" => "B" +"C" => "C" +"D" => "D" +"E" => "E" +"F" => "F" +"G" => "G" +"H" => "H" +"I" => "I" +"J" => "J" +"K" => "K" +"L" => "L" +"M" => "M" +"N" => "N" +"O" => "O" +"P" => "P" +"Q" => "Q" +"R" => "R" +"S" => "S" +"T" => "T" +"U" => "U" +"V" => "V" +"W" => "W" +"X" => "X" +"Y" => "Y" +"Z" => "Z" + +"a" => "a" +"b" => "b" +"c" => "c" +"d" => "d" +"e" => "e" +"f" => "f" +"g" => "g" +"h" => "h" +"i" => "i" +"j" => "j" +"k" => "k" +"l" => "l" +"m" => "m" +"n" => "n" +"o" => "o" +"p" => "p" +"q" => "q" +"r" => "r" +"s" => "s" +"t" => "t" +"u" => "u" +"v" => "v" +"w" => "w" +"x" => "x" +"y" => "y" +"z" => "z" + +# !"#$%&'()=|-^\@[`{;:]+*}/_<>? +"!" => "!" +"”" => "\"" +"#" => "#" +"$" => "$" +"%" => "%" +"&" => "&" +"’" => "'" +"(" => "(" +")" => ")" +"=" => "=" +"|" => "|" +"-" => "-" +"^" => "^" +"¥" => "\\" +"@" => "@" +"[" => "[" +"`" => "`" +"{" => "{" +";" => ";" +":" => ":" +"]" => "]" +"+" => "+" +"*" => "*" +"}" => "}" +"/" => "/" +"_" => "_" +"<" => "<" +">" => ">" +"?" => "?" +"‘" => "`" + +"①" => "1" +"②" => "2" +"③" => "3" +"④" => "4" +"⑤" => "5" +"⑥" => "6" +"⑦" => "7" +"⑧" => "8" +"⑨" => "9" diff --git a/src/main/resources/fess_indices/fess/ja/synonym.txt b/src/main/resources/fess_indices/fess/ja/synonym.txt new file mode 100644 index 000000000..e432e75ca --- /dev/null +++ b/src/main/resources/fess_indices/fess/ja/synonym.txt @@ -0,0 +1 @@ +fess,フェス