一、Lucene.Net
- 来源:Lucene是Java开发的全文检索库;Lucene.Net是Lucene的.NET平台C#移植版,Apache基金会开源项目,遵循Apache License协议。
- 定位:不是成品搜索引擎,只是一套全文检索开发组件包,提供查询引擎、索引引擎,需要开发者自己编码实现检索功能;不会自动爬取内容,需要手动提取文本添加到索引。
- 开发简要步骤
- 初始化分词器
Analyzer - 打开
IndexWriter索引写入器 - 逐个添加文档
- 关闭后,索引自动优化,变更生效
- 初始化分词器
- 核心原理:索引文件 建立索引时,会生成独立的索引文件,把词语和文章文档做关联。 用户搜索时读取索引文件,不再直接查询数据库。 ✅优点:查询速度快,大幅降低数据库压力 、
- 缺点:搜索不是实时。新增文章不会立刻出现在搜索结果,需要手动/定时重建索引。
二、盘古分词
- 定位:中英文分词组件,支持自定义分词规则,常配合Lucene.Net使用。
- 作用:解决Lucene自带词库中文词汇不足的问题。举例:文章标题
望向黑色迷墙- Lucene自带词库可以识别
黑色,搜索“黑色”可以找到这篇文章; - 自带词库没有
迷墙,直接用Lucene分词时,搜“迷墙”无法匹配文章; - 接入盘古分词,就可以识别
迷墙这个词,建立索引,用户搜索迷墙就能检索到文章。
- Lucene自带词库可以识别
总结
Lucene.Net是.NET下做全文检索的核心框架,但自带中文分词能力弱;盘古分词是配套的中文分词插件,用来精准拆分中文词语,提升中文搜索效果。