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