Lucene.NET 上的 ASCIIFoldingFilter 使用示例

发布于 2024-10-21 23:55:08 字数 342 浏览 3 评论 0原文

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

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

我在SQL Server上完成了它,但我想将其移动到Lucene.NET。我做了研究,首先在Lucene中找到了ISOLatinFilter,然后找到了ASCIIFoldingFilter。但我找不到如何使用它的简单示例(即使在 Lucene in Action 书中)

您能给我一个小示例代码来实现重音不敏感搜索吗?我还需要更改索引方面的其他内容吗?由于我还需要区分重音,因此我无法仅创建不区分重音的索引。

谢谢

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 SQL 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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

肩上的翅膀 2024-10-28 23:55:08

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

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

    }

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

    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文