0
我寫這個代碼我CustomAnalyzer的一部分:現在爲什麼這個代碼 - 添加wordnet同義詞索引 - 失敗?
public class CustomAnalyzer extends Analyzer {
SynonymMap mySynonymMap = null;
CustomAnalyzer() throws IOException {
SynonymMap.Builder builder = new SynonymMap.Builder(true);
FileReader fr = new FileReader("/home/watsonuser/Downloads/wordnetSynonyms.txt");
BufferedReader br = new BufferedReader(fr);
String line = "";
while ((line = br.readLine()) != null) {
String[] synset = line.split(",");
for(String syn: synset)
builder.add(new CharsRef(synset[0]), new CharsRef(syn), true);
}
br.close();
fr.close();
try {
mySynonymMap = builder.build();
} catch (IOException e) {
System.out.println("Unable to build synonymMap");
e.printStackTrace();
}
}
public TokenStream tokenStream(String fieldName, Reader reader) {
TokenStream result = new PorterStemFilter(new SynonymFilter(
(new StopFilter(true,new LowerCaseFilter
(new StandardFilter(new StandardTokenizer
(Version.LUCENE_36,reader)
)
),StopAnalyzer.ENGLISH_STOP_WORDS_SET)), mySynonymMap, true)
);
}
}
,如果我用同樣的CustomAnalyzer作爲我查詢的一部分,那麼,如果我進入查詢作爲
myFieldName: manager
它擴展經理的同義詞查詢。
但是,我想同義詞只是我的索引的一部分,我不希望我的查詢擴展與同義詞。
所以,當我查詢索引,只有當從我CustomAnalyzer刪除SynonymFilter,查詢仍然是
myFieldName: manager
但是,它無法檢索具有管理者的同義詞的文檔。
我們如何解決這個問題?