2017-12-29 12 views
0

独自の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) 

おかげのように私にエラーを与えて...

答えて

0

ようにそれをやっていますこのアナライザの設定リソースを探す必要があります。 addTokenFilterの2番目の引数は、パラメタのリストであり、シノニムマッピングではありません。

あなたがしたいことは、シノニムのリストを上記のディレクトリにファイルとして入れ、そのファイル名をaddTokenFilter呼び出しの「同義語」パラメータとして渡します(他のパラメータ必要かもしれない)。

関連する問題