ASCIIFoldingFilter usage example on Lucene.NET
I am trying to implement my search on Lucene.NET and my needs are:
- search and find the result directly
- if there is no result, search again with Accent Insensitive
I did it on 开发者_如何学PythonSQL Server but I want to move it to Lucene.NET. I made a research and first I found ISOLatinFilter and then ASCIIFoldingFilter in Lucene. But I couldn't find a simple example how to use it (Even in Lucene in Action book)
Can you please give me a small sample code to achieve accent insensitive search? Do I need to change anything else on Indexing? As I need accent sensitive also, I cannot create an Accent insensitive index only.
Thanks
Use this class as your Analyzer on index and search, Works for me.
public class CustomAnalyzer : StandardAnalyzer
{
Lucene.Net.Util.Version matchVersion;
public CustomAnalyzer(Lucene.Net.Util.Version p_matchVersion)
: base(p_matchVersion)
{
matchVersion = p_matchVersion;
}
public override TokenStream TokenStream(string fieldName, System.IO.TextReader reader)
{
TokenStream result = new StandardTokenizer(matchVersion, reader);
result = new StandardFilter(result);
result = new ASCIIFoldingFilter(result);
return result;
}
}
精彩评论