Lucene.NET上的ASCIIFoldingFilter用法示例

时间:2011-03-12 00:34:42

标签: c# lucene ascii lucene.net

我正在尝试在Lucene.NET上实现我的搜索,我的需求是:

  • 直接搜索并查找结果
  • 如果没有结果,请使用Accent Insensitive再次搜索

我是在SQL Server上完成的,但我想把它转移到Lucene.NET。我做了一个研究,首先我在Lucene找到了ISOLatinFilter然后找到了ASCIIFoldingFilter。但我找不到一个简单的例子如何使用它(即使在Lucene的行动书中)

你能给我一个小样本代码来实现重音不敏感搜索吗?我需要在索引上更改其他内容吗?由于我也需要重音敏感,我不能仅创建Accent不敏感索引。

由于

1 个答案:

答案 0 :(得分:2)

使用此类作为索引和搜索的分析器,为我工作。

    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;
        }

    }