Java 从Lucene标准分析器中删除空格字符 标准分析器< /代码>考虑空间字符作为令牌,我希望标准分析器< /代码>不使用空间字符作为令牌来制作令牌。那么,如何覆盖StandardAnalyzer的标记器呢。如果不是,请建议任何其他分析器,并举例说明不使用空格字符作为标记。

Java 从Lucene标准分析器中删除空格字符 标准分析器< /代码>考虑空间字符作为令牌,我希望标准分析器< /代码>不使用空间字符作为令牌来制作令牌。那么,如何覆盖StandardAnalyzer的标记器呢。如果不是,请建议任何其他分析器,并举例说明不使用空格字符作为标记。,java,lucene,analyzer,Java,Lucene,Analyzer,此代码可以帮助您: Analyzer ana = new StandardAnalyzer(LUCENE_30, Collections.emptySet()); 请注意,答案取决于版本。对于Lucene 4.0,请使用: Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_40, CharArraySet.EMPTY_SET); 编辑: 构造一个由StandardFilter、org.apache.lucene.analysis.

此代码可以帮助您:

Analyzer ana = new StandardAnalyzer(LUCENE_30, Collections.emptySet());
请注意,答案取决于版本。对于Lucene 4.0,请使用:

Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_40, CharArraySet.EMPTY_SET);
编辑:

构造一个由StandardFilter、org.apache.lucene.analysis.LowerCaseFilter和org.apache.lucene.analysis.StopFilter过滤的标准标记器

@Override
public TokenStream tokenStream(String fieldName, Reader reader) {
   StandardTokenizer tokenStream = new StandardTokenizer(matchVersion, reader);
    tokenStream.setMaxTokenLength(maxTokenLength);
    TokenStream result = new StandardFilter(tokenStream);
    result = new LowerCaseFilter(result);
    result = new StopFilter(enableStopPositionIncrements, result, stopSet);
    return result;
}

private static final class  SavedStreams {
        StandardTokenizer tokenStream;
        TokenStream filteredTokenStream;
}

我将
标准分析器
替换为
关键字分析器
,因此这将用于索引和搜索。。。然后在搜索方法中添加这些行

parser.setDefaultOperator(Operator.AND);
if(searchWord.contains(" ")){
    searchWord= searchWordreplace(" ", "?");
}

我使用的是Lucene 4.3->
版本。Lucene_43
,在上面的示例中,您使用的构造函数只是设置
停止字的空列表。但是我想设置令牌列表…我不想覆盖
分析器
,您能否共享只覆盖
分析器
令牌的示例代码。我将非常感谢你。:)那么更新后的答案有什么意义呢。。。您正在尝试向分析器添加新的令牌列表还是什么?对不起,我不明白重点。请你详细说明一下(最好举个好例子)。