SqlServer全文索引在项目中的实际应用

重写分析器

lucene.net中每个分词器都是一个类,同时有一个辅助类,这个辅助类完成分词的大部分逻辑。分词类以Analyzer结尾,辅助类通常以Tokenizer结尾。分类词全部继承自Analyzer类,辅助类通常也会继承CharTokenizer,比如说有新需求,希望我们加一个逗号分词器:

复制代码
namespace Lucene.Net.Analysis
{
    /// <summary>
    /// 逗号分词器   这是自定义的一个分词器,如果之后还需要自定义分词器的话,就需要和这一样分别继承Analyzer和CharTokenizer
    /// </summary>
    public class CommaAnalyzer : Analyzer
    {
        public override TokenStream TokenStream(string fieldName, TextReader reader)
        {
            //CommaTokenizer  自定义的逗号分析器的
            return new CommaTokenizer(reader);
        }
        public override TokenStream ReusableTokenStream(string fieldName, TextReader reader)
        {
            Tokenizer tokenizer = (Tokenizer)this.PreviousTokenStream;
            if (tokenizer == null)
            {
                tokenizer = new CommaTokenizer(reader);
                this.PreviousTokenStream = tokenizer;
            }
            else
            {
                tokenizer.Reset(reader);
            }
            return tokenizer;
        }
    }
}
复制代码

 

辅助类:

复制代码
namespace Lucene.Net.Analysis
{
    public class CommaTokenizer : CharTokenizer
    {
        public CommaTokenizer(TextReader in_Renamed)
            : base(in_Renamed)
        {
        }
        public CommaTokenizer(AttributeSource source, TextReader in_Renamed)
            : base(source, in_Renamed)
        {
        }
        public CommaTokenizer(AttributeSource.AttributeFactory factory, TextReader in_Renamed)
            : base(factory, in_Renamed)
        {
        }
        protected override bool IsTokenChar(char c)
        {
            return c != ',';
        }
    }
}
复制代码

 

posted @   安静点--  阅读(67)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示