Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Lucene 6.2.0的CustomAnalayzer中使用同义词映射_Java_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Lucene - Fatal编程技术网 elasticsearch,lucene,Java,elasticsearch,Lucene" /> elasticsearch,lucene,Java,elasticsearch,Lucene" />

Java 如何在Lucene 6.2.0的CustomAnalayzer中使用同义词映射

Java 如何在Lucene 6.2.0的CustomAnalayzer中使用同义词映射,java,elasticsearch,lucene,Java,elasticsearch,Lucene,我不想编写自己的Analyzer类。我看到了ApacheLuceneCustomAnalyzer提供的一个新特性,您可以在其中构建自己的自定义分析器 Analyzer ana = CustomAnalyzer.builder(Paths.get(index)) .withTokenizer(StandardTokenizerFactory.class).addTokenFilter(LowerCaseFilterFactory.class) .addTokenFilter(StandardFil

我不想编写自己的Analyzer类。我看到了ApacheLuceneCustomAnalyzer提供的一个新特性,您可以在其中构建自己的自定义分析器

Analyzer ana = CustomAnalyzer.builder(Paths.get(index))
.withTokenizer(StandardTokenizerFactory.class).addTokenFilter(LowerCaseFilterFactory.class)
.addTokenFilter(StandardFilterFactory.class).build();
因此,这里我想为addTokenFilter(SynonymFilter.class)再添加一个选项,在这里我将把默认值传递给分析器,比如synonymMap、tokenstream和所有东西,所以我只想询问

addTokenFilter(StopFilterFactory.class, "ignoreCase", "false", "words", "stopwords.txt", "format", "wordset")
我已经看到这个例子可以像这里定义的StopFilter一样使用 是否可以在自定义分析器中使用同义词映射。如果可以,则如何使用。。 同义词筛选器的构造函数也是如此

HashMap<String, String> synonymMap = new HashMap<String, String>(10);
    synonymMap.put("synonyms", "Facebook");
这给了我这样的错误

 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)

提前谢谢

传递到
builder
的路径不是索引目录,而是它应该在其中查找此分析器的配置资源。
addTokenFilter
的第二个参数是参数列表,而不是同义词映射

您要做的是将同义词列表放入上述目录中的一个文件中,并将该文件名作为addTokenFilter调用中的“同义词”参数传递(以及您可能需要的任何其他参数)