Ich möchte nicht meine eigene Analyzer-Klasse schreiben. Ich habe eine neue Funktion von Apache Lucene CustomAnalyzer gesehen, wo Sie Ihren eigenen Custom Analyzer erstellen können.So verwenden Sie SynonymMap in CustomAnalayzer von Lucene 6.2.0
Analyzer ana = CustomAnalyzer.builder(Paths.get(index))
.withTokenizer(StandardTokenizerFactory.class).addTokenFilter(LowerCaseFilterFactory.class)
.addTokenFilter(StandardFilterFactory.class).build();
so hier will ich für addTokenFilter (SynonymFilter.class) eine weitere Option hinzuzufügen, wo ich den Standardwert an den Analysator wie synonymMap, tokenstream und alles passieren, damit ich möchte nur fragen ..
addTokenFilter(StopFilterFactory.class, "ignoreCase", "false", "words", "stopwords.txt", "format", "wordset")
ich dieses Beispiel gesehen haben, ist möglich, wie hier in der gleichen Art und Weise zu verwenden StopFilter definiert ist ist es möglich SynonymMap innerhalb eigenen Analysator zu verwenden oder nicht ..und wenn ja dann, wie dies zu tun .. Konstruktor für Synonym Filter ist als solcher ..
HashMap<String, String> synonymMap = new HashMap<String, String>(10);
synonymMap.put("synonyms", "Facebook");
ich tue es wie dieses
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();
seine gibt mir Fehler wie diese
Exception in thread "main" java.io.IOException: Resource not found: Facebook
at org.apache.lucene.analysis.util.ClasspathResourceLoader.openResource(ClasspathResourceLoader.java:67)
Vielen Dank im Voraus ..