仿造百度实现基于Lucene.net全文检索

Lucene.NET全文检索实战:从零构建高相关性中文搜索 全文检索是现代应用的核心数据能力,其本质基于倒排索引与TF-IDF相关性模型,解决用户‘输入即响应’的语义匹配需求。Lucene.NET作为.NET平台唯一经十年生产验证的轻量级检索内核,提供毫秒级查询、深度分词控制和零外部依赖部署能力,特别适合中小团队在CMS、知识库、内部系统中快速落地可控搜索。相比SQL模糊查询的性能坍塌与Elasticsearch的运维负担,Lucene.NET以本地索引+可定制Analyzer+字段权重机制,实现中文分词、布尔查询、范围筛选与高亮显示等Baidu式体验。本文聚焦.N 阅读详情

http://www.cnblogs.com/OceanEyes/archive/2012/07/31/2616178.html

来自:http://developer.51cto.com/art/201207/350987.htm

Lucene.Net

Lucene.net是Lucene的.net移植版本,是一个开源的全文检索引擎开发包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,是一个Library.你也可以把它理解为一个将索引,搜索功能封装的很好的一套简单易用的API(提供了完整的查询引擎和索引引擎)。利用这套API你可以做很多有关搜索的事情,而且很方便.。开发人员可以基于Lucene.net实现全文检索的功能。

注意:Lucene.Net只能对文本信息进行检索。如果不是文本信息,要转换为文本信息,比如要检索Excel文件,就要用NPOI把Excel读取成字符串,然后把字符串扔给Lucene.Net。Lucene.Net会把扔给它的文本切词保存,加快检索速度。

更多概念性的知识可以参考这篇博文:http://blog.youkuaiyun.com/xiucool/archive/2008/11/28/3397182.aspx

这个小Demo样例展示:

ok,接下来就细细详解下士怎样一步一步实现这个效果的。

Lucene.Net 核心——分词算法(Analyzer)

学习Lucune.Net,分词是核心。当然最理想状态下是能自己扩展分词,但这要很高的算法要求。Lucene.Net中不同的分词算法就是不同的类。所有分词算法类都从Analyzer类继承,不同的分词算法有不同的优缺点。

内置的StandardAnalyzer是将英文按照空格、标点符号等进行分词,将中文按照单个字进行分词,一个汉字算一个词

 
  1. Analyzer analyzer = new StandardAnalyzer();
  2. TokenStream tokenStream = analyzer.TokenStream("",new StringReader("Hello Lucene.Net,我1爱1你China"));
  3. Lucene.Net.Analysis.Token token = null;
  4. while ((token = tokenStream.Next()) != null)
  5. {
  6. Console.WriteLine(token.TermText());
  7. }

分词后结果:

二元分词算法,每两个汉字算一个单词,“我爱你China”会分词为“我爱 爱你 china”,点击查看二元分词算法CJKAnalyzer。

 
  1. Analyzer analyzer = new CJKAnalyzer();
  2. TokenStream tokenStream = analyzer.TokenStream("", new StringReader("我爱你中国China中华人名共和国"));
  3. Lucene.Net.Analysis.Token token = null;
  4. while ((token = tokenStream.Next()) != null)
  5. {
  6. Response.Write(token.TermText()+"<br/>");
  7. }

这时,你肯定在想,上面没有一个好用的,二元分词算法乱枪打鸟,很想自己扩展Analyzer,但并不是算法上的专业人士。怎么办?

天降圣器,盘古分词,点击下载。

 

Lucene.NET中文全文检索实战:从分词到相关性排序 全文检索是现代应用搜索能力的基础技术,其核心在于突破SQL LIKE的字符匹配局限,实现语义感知的文本理解。它依赖倒排索引结构、中文分词处理、相关性打分模型(如BM25)等关键技术原理,显著提升查准率与响应速度。在.NET生态中,Lucene.NET作为轻量、嵌入式、高可控的开源方案,特别适合需规避Elasticsearch运维成本或SQL Server全文索引灵活性不足的中小系统。本文聚焦中文场景下的真实落地难点——包括IKAnalyzer适配、字段级权重控制、Query手写构建及NRT索引刷新,覆盖制造 阅读详情

相关推荐

lucene 实现类似百度搜索

用lucene实现的搜索引擎,支持中文、英文、日文、俄文、德文5种语言的搜索!

使用Lucene.Net实现全文检索

目录 一Lucene.Net概述 二 分词 三 索引 四 搜索 五 实践中的问题 一Lucene.Net概述   Lucene.Net是一个C#开发的开源全文索引库,其源码包括“核心”与“外围”两部分。外围部分实现辅助功能,而核心部分包括: Lucene.Net.Index 提供索引管理,词组排序。Lucene.Net.Search 提供查询相关功能。Luce

李赛赛的专栏 1万+

避坑指南:HslCommunication连接西门子PLC时常见的5个错误及解决方法(S7-1200/S1500适用)

本文详细解析了使用HslCommunication连接西门子S7-1200/S1500 PLC时常见的5个错误及解决方法,包括基础连接配置、数据块读写异常、连接闪断、防火墙与权限问题以及高级调试技巧。通过实战案例和代码示例,帮助开发者快速定位和解决连接问题,提升工业自动化项目的开发效率。

weixin_30752699的博客 397

使用 LayUI+SpringBoot+Solr 模仿百度、做站内搜索引擎

前言全文检索于 sql 模糊查询,最大的区别,在于 ① 前者能将要查询的关键字符串先进行灵活分词,再进行匹配, ② 后者只会直接死板匹配。 ③ 很多网站都有站内搜索,每个后台的应该会,故做了个 demo 分享还有很多优点,相信大家都已经了解摘要前后端分离① 前端框架:jQuery、LayUI② 后台框架:SpringBoot、Solr模仿百度搜索,麻雀虽小,五脏俱全 本文很多基础都来自笔者

IT小村 4500

Hypermesh到Abaqus CEL网格转换全攻略:解决欧拉体导入难题

本文详细解析了Hypermesh到Abaqus CEL网格转换的全流程,重点解决欧拉体导入难题。通过单元类型转换、INP文件编辑和多组件合并技术,实现流固耦合仿真的高效前处理。文章包含实用脚本和工程案例,帮助工程师突破ABAQUS CEL分析中的网格转换瓶颈。

weixin_30832143的博客 191

CCS8.1 导入CCS3.3工程方法

    CCS3.3作为开发人员使用最广开发工具,研究人员手上存在不少该版本的建立的程序版本,然而随着TI公司推出高级版本的CCS平台,在新的平台上集成了更加丰富的功能和优点。利用新版本的平台在开发和编译旧版本工程上可以节省大量时间和精力。在使用新版本开发3.3版本工程时,首要解决的就是加载3.3的工程文件,现将加载过程记录如下: 第一步:Project-&gt;Import Legacy CC...

1万+

全文检索的实现方式

近段时间公司项目的需要,需要对新闻资讯进行全文检索。 新闻资讯总的访问量是日pv1000万,这其中有点水分,有些是爬虫爬的。历史数据量大概是500万+,性能要求支持400个并发请求。页面加载速度需要在1.5秒内加载完毕。 所以针对全文检索这块一开始考虑到使用sphinx或者lucence。最终选择了sphinx,一是它的配置相对来说简单,另外它的效率比较高。但是它对中文的分词支持不太好,google了下,基于sphinx的coreseek和sphinx for chinese在中文检索方面还是不错的。但是c

phphub的博客 4206

信噪比(Signal-to-Noise Ratio, SNR)详细介绍

信噪比(Signal-to-Noise Ratio,SNR)是衡量信号质量的重要参数,表示有用信号的功率与背景噪声功率的比值。其中,\( P_{\text{signal}} \) 表示信号功率,\( P_{\text{noise}} \) 表示噪声功率。- 音频处理:在音频设备和录音系统中,SNR决定了音质的好坏,高SNR表示音频信号更清晰,噪声更少。- 低SNR:信号中噪声成分较大,接收端难以分辨有用信号和噪声,可能导致误码率高,通信质量差。SNR定义为信号功率与噪声功率之比,通常用分贝(dB)表示。

qq_58860480的博客 8万+

基于Lucene的搜索引擎核心技术实践

搜索服务,已经成为了互联网最常用的基本服务: 从谷歌、百度搜索关键字,到电商平台搜索商品,再到微信查看附近的人。我们几乎每时每刻都在用到它。所以,搜索引擎技术一直为大家关注。作者本人曾负责一些大型的分布式搜索系统,本文从个人项目出发,讲讲基于 Lucene 的核心搜索引擎技术实践。希望让大家对搜索系统有进一步了解和启发。之前,我曾分享过 Qunar 的机票搜索系统,一种基于航...

weixin_34205076的博客 429

浏览器主页被360篡改?教你彻底解决并预防再次发生

通过本文介绍的快捷方式修复、注册表清理、启动项管理三步法,可解决99%的浏览器主页篡改问题。权限最小化原则:非管理员账户日常使用,关键系统目录设置写保护定期安全审计:每月检查启动项/计划任务/浏览器扩展备份还原机制:创建系统还原点,重要操作前做好快照安全意识培养:不安装来源不明的软件,谨慎处理软件安装向导中的附加选项浏览器安全是系统防护的重要环节,建议结合EDR(终端检测与响应)方案构建立体防护体系。对于普通用户,保持系统更新、使用官方渠道下载软件、定期清理系统垃圾,即可有效预防绝大多数安全威胁。

nntxthml的博客 1万+

基于TI C2000的CCS安装与工程创建完整示例

手把手演示基于TI C2000系列的CCS安装过程及首个工程创建步骤,涵盖环境配置与常见问题处理,助力快速上手嵌入式开发,ccs安装和工程搭建不再难。

weixin_42476987的博客 970

仿造Baidu简单实现基于Lucene.net的全文检索的功能

Directory表示索引文件(Lucene.net用来保存用户扔过来的数据的地方)保存的地方,是抽象类,两个子类FSDirectory(文件中)、RAMDirectory (内存中)。IndexReader对索引进行读取的类,对IndexWriter进行写的类。IndexReader的静态方法bool IndexExists(Directory directory)判断目录directory是否是一个索引目录。

mO9pSQ91M的博客 213

发那科 Fanuc PLC 报文通讯,报文解析。附源程序

发那科 Fanuc PLC 报文通讯,最详细的发那科 PLC报文解析,不再局限在官方提供的库,也不用再局限在windows平台。

ITOfDragon的博客 1747

火力全开——仿造Baidu简单实现基于Lucene.net的全文检索的功能

索引优化。

tTAzN00W3的博客 142

YOLOv11改进 | 细节涨点篇 | DySample一种最新的轻量化动态上采样算子(效果完爆CARAFE)

本文给大家带来的最新改进机制是一种号称超轻量级且有效的动态上采样器——DySample。与传统的基于内核的动态上采样器相比,DySample采用了一种基于点采样的方法,相比于以前的基于内核的动态上采样器,DySample具有更少的参数、浮点运算次数、GPU内存和延迟。此外,DySample在包括语义分割、目标检测、实例分割、全景分割和单目深度估计在内的五个预测任务中,性能均优于其他上采样器(截至目前最有效的上采样算子),

Snu77的博客 4211

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

站内搜索------仿造Baidu简单实现基于Lucene.net的全文检索的功能

首先说明下,这只是篇引子。 现在开始决定对自己进行重大的写博客计划修改,呵呵,其实自己也没写过多少博客,主要内容如下: 反正我的习惯是对感兴趣的或技术,或项目进行搜索并了解,所有我做修改,以后的博客文章以项目为主要中心,以项目的主要技术点为纬线,以一些自我研究的小的技术点为经线-----就是那些"你知道了就知道了,你不知道就不知道,但你不知道很要人命"。 然后我的每个以研究大神的源码...

weixin_30659829的博客 154

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: Web必备:30款超棒JS类库和工具分享(arvin--推荐)
下一篇: js正则函数match、exec、test、search、replace、split使用介绍集合
ArvinStudy
博客等级 码龄15年 83粉丝 193原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值