从Lucene标准分析器中删除空格字符

时间:2014-09-10 07:48:22

标签: java lucene analyzer

StandardAnalyzer将空格字符视为一个标记,我希望StandardAnalyzer不要使用空格字符作为标记来制作标记。那么如何覆盖StandardAnalyzer的标记化器。如果不是,请使用不使用空格字符作为标记的示例建议任何其他Analyzer

2 个答案:

答案 0 :(得分:1)

此代码可以帮助你:

Analyzer ana = new StandardAnalyzer(LUCENE_30, Collections.emptySet());

请注意,答案取决于版本。对于Lucene 4.0,请使用:

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

修改:

构造一个由StandardFilter过滤的StandardTokenizer,一个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;
}

答案 1 :(得分:1)

我将StandardAnalyzer替换为KeywordAnalyzer,因此这将用于索引和搜索...然后在搜索方法中我添加这些行

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