独自のAnalyzerクラスを作成したくありません。私はapache lucene CustomAnalyzerによって提供された新しい機能を見てきました。カスタムアナライザをビルドすることができます。LuceneのCustomAnalayzerでSynonymMapを使用する方法6.2.0
Analyzer ana = CustomAnalyzer.builder(Paths.get(index))
.withTokenizer(StandardTokenizerFactory.class).addTokenFilter(LowerCaseFilterFactory.class)
.addTokenFilter(StandardFilterFactory.class).build();
ので、ここで私はただ聞いてみたいので、私はsynonymMap、tokenstream、すべてのようなアナライザにデフォルト値を渡しする場所addTokenFilter(SynonymFilter.class)ごとに1つの以上のオプションを追加したい。..
addTokenFilter(StopFilterFactory.class, "ignoreCase", "false", "words", "stopwords.txt", "format", "wordset")
私はこの例を見てきました
ここStopFilterのように同じように使用することが可能であるが はい、その後どのようにそうする場合..andカスタム・アナライザ内SynonymMapを使用したりしないように、それは可能です定義されます。..同義語のための コンストラクタフィルターはそのままです。
HashMap<String, String> synonymMap = new HashMap<String, String>(10);
synonymMap.put("synonyms", "Facebook");
iはbuilder
に渡されたパスがインデックスではありません。この
SynonymMap.Builder builder = new SynonymMap.Builder(true);
builder.add(new CharsRef("Facebook"), new CharsRef("YearBook,FaceB00k"), true);
builder.add(new CharsRef("Facebook1"), new CharsRef("Fraud"), false);
builder.add(new CharsRef("Suzie"), new CharsRef("Susan"), false);
SynonymMap map = null;
try {
map = builder.build();
} catch (IOException e) {
e.printStackTrace();
}
Analyzer ana = CustomAnalyzer.builder(Paths.get(index))
.withTokenizer(StandardTokenizerFactory.class)
.addTokenFilter(StandardFilterFactory.class)
.addTokenFilter(LowerCaseFilterFactory.class)
.addTokenFilter(SynonymFilterFactory.class,synonymMap)
.build();
その事前にこの
Exception in thread "main" java.io.IOException: Resource not found: Facebook
at org.apache.lucene.analysis.util.ClasspathResourceLoader.openResource(ClasspathResourceLoader.java:67)
おかげのように私にエラーを与えて...