gpt4 book ai didi

java - 以编程方式创建同义词过滤器

转载 作者:行者123 更新时间:2023-12-01 12:35:37 24 4
gpt4 key购买 nike

我正在努力创建 SynonymFilter我尝试以编程方式创建。您应该如何告诉过滤器同义词列表在哪里?

我正在使用 Hibernate Search,但我不想使用 @AnalyzerDef 注释。我所能做的就是传递一个同义词映射?

private class AllAnalyzer extends Analyzer {

private SynonymFilterFactory synonymFilterFactory = new SynonymFilterFactory();

public AllAnalyzer() {
ClassLoader classLoader = getClass().getClassLoader();
String filePath = classLoader.getResource("synonyms.txt").getFile();
HashMap<String, String> stringStringHashMap = new HashMap<String, String>();
stringStringHashMap.put("synonyms", filePath);
stringStringHashMap.put("format", "solr");
stringStringHashMap.put("ignoreCase", "false");
stringStringHashMap.put("expand", "true");
stringStringHashMap.put("luceneMatchVersion", Version.LUCENE_36.name());
synonymFilterFactory.init(stringStringHashMap);
}

@Override
public TokenStream tokenStream(String fieldName, Reader reader) {
TokenStream result = null;
result = new StandardTokenizer(Version.LUCENE_36, reader);
result = new StandardFilter(Version.LUCENE_36, result);
result = synonymFilterFactory.create(result);
return result;
}
}

无法让它工作。当我调试时,它说映射为空并且我得到一个 NPE。怎么了?

最佳答案

是的,您需要将 SynonymMap 传递给 SynonymFilter。

听起来您想从文件中填充它,因此您可能需要使用 SolrSynonymParser来生成它。大致如下:

SolrSynonymParser parser = new SolrSynonymParser(true, false, analyzer);
Reader synonymFileReader = new FileRader(new File(path));
parser.add(synonymFileReader);
SynonymMap map = parser.build(); // SolrSynonymParser extends SynonymMap.Builder

关于java - 以编程方式创建同义词过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25628317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com