StandardAnalyzer
将空格字符视为一个标记,我希望StandardAnalyzer
不要使用空格字符作为标记来制作标记。那么如何覆盖StandardAnalyzer
的标记化器。如果不是,请使用不使用空格字符作为标记的示例建议任何其他Analyzer
。
答案 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(" ", "?");
}