[英]Lucene custom analyzer
我正在使用Lucene来搜索工作站点,并解决了此类问题。 我需要搜索C#、. net,所以我需要使用WhiteSpaceAnalyzer,但是如果使用它,搜索将区分大小写。
我该如何使案件变得敏感? 现在,我看到只有一种解决方案是制作自己的分析器。 但是我是Lucene的新手,请您帮我提供一些代码示例。 我做了一些我认为必须起作用的事情,但事实并非如此。 看
public sealed class NewWhitespaceAnalyzer : Analyzer
{
public override TokenStream TokenStream(System.String fieldName, System.IO.TextReader reader)
{
return new LowerCaseFilter(new WhitespaceTokenizer(reader));
}
public override TokenStream ReusableTokenStream(System.String fieldName, System.IO.TextReader reader)
{
Tokenizer tokenizer = (Tokenizer)GetPreviousTokenStream();
if (tokenizer == null)
{
tokenizer = new WhitespaceTokenizer(reader);
SetPreviousTokenStream(tokenizer);
}
else
tokenizer.Reset(reader);
return tokenizer;
}
}
如果您在这里看到错误,请纠正我。
如有其他建议,欢迎您。
感谢您的帮助,迪玛。
尝试这个:
public sealed class NewWhitespaceAnalyzer : Analyzer
{
public override TokenStream TokenStream(System.String fieldName, System.IO.TextReader reader)
{
return new LowerCaseFilter(new WhitespaceTokenizer(reader));
}
public override TokenStream ReusableTokenStream(System.String fieldName, System.IO.TextReader reader)
{
SavedStreams streams = (SavedStreams) GetPreviousTokenStream();
if (streams == null)
{
streams = new SavedStreams();
SetPreviousTokenStream(streams);
streams.tokenStream = new WhiteSpaceTokenizer(reader);
streams.filteredTokenStream = new LowerCaseFilter(streams.tokenStream);
}
else
{
streams.tokenStream.Reset(reader);
}
return streams.filteredTokenStream;
}
}
有2分:
在ReusableTokenStream
方法中也使用LowerCaseFilter
。
不要忘记在查询解析和文档索引编制中都使用此自定义Analyzer
。
请享用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.